如何删除未打开的文件?

The*_*ser 1 linux ubuntu rm

假设我的Ubuntu-Linux的目录中有三个文件。其中之一在音乐播放器中打开,但另外两个未在任何应用程序中打开,并且未在任何进程中使用。

我想删除这两个文件。换句话说,我想检测没有被任何进程使用的文件,然后删除它们。

我试过这个:

rm !(lsof | grep "thePath")
Run Code Online (Sandbox Code Playgroud)

但它失败了。这里有问题lsof

有什么办法吗?

tri*_*eee 6

你的语法完全错误。在 shell 中,与许多其他编程语言不同,将命令(就像函数调用一样)放在括号中不会产生其结果。

相反,你想要这样的东西:

for f in *; do
    fuser -s "$f" || rm "$f"
done
Run Code Online (Sandbox Code Playgroud)

fuser更喜欢它lsof,因为它允许您查询单个文件。