如何使用find命令列出未打开的文件

puf*_*der 3 linux find lsof gnu

我想使用 GNU find 命令在某个目录中“列出”所有未打开的文件。现在,我可以列出打开的文件,但无法找到相反的方法。

find /my/dir/* -exec lsof {} \;  
Run Code Online (Sandbox Code Playgroud)

任何想法如何做到这一点?

ste*_*tew 15

find /my/dir -type f | while read filename ; do fuser -s $filename || echo $filename ; done
Run Code Online (Sandbox Code Playgroud)

这仅使用 find 来生成文件列表。然后 while 循环遍历结果列表,对于它运行的每个结果,fuser -s $filename如果有东西正在使用该文件,它将成功退出。

|| echo $filename部分的意思是“如果热熔器失败(意味着没有人使用该文件),则回显文件名”