如何删除未打开的文件?
How to delete files that are not open?
假设我的Ubuntu-Linux的一个目录下有三个文件。其中一个在音乐播放器中打开,但另外两个未在任何应用程序中打开并且未使用任何进程。
我想删除这两个文件。换句话说,我想检测没有被任何进程使用的文件,然后删除它们。
我试过这个:
rm !(lsof | grep "thePath")
但是失败了。 lsof
这里有问题。
有什么办法吗?
你的语法错得离谱。在 shell 中,与许多其他编程语言不同,将命令(就像函数调用一样)放在括号中不会产生结果。
相反,您想要这样的东西:
for f in *; do
fuser -s "$f" || rm "$f"
done
我更喜欢 fuser
而不是 lsof
,因为它允许您查询单个文件。
假设我的Ubuntu-Linux的一个目录下有三个文件。其中一个在音乐播放器中打开,但另外两个未在任何应用程序中打开并且未使用任何进程。
我想删除这两个文件。换句话说,我想检测没有被任何进程使用的文件,然后删除它们。
我试过这个:
rm !(lsof | grep "thePath")
但是失败了。 lsof
这里有问题。
有什么办法吗?
你的语法错得离谱。在 shell 中,与许多其他编程语言不同,将命令(就像函数调用一样)放在括号中不会产生结果。
相反,您想要这样的东西:
for f in *; do
fuser -s "$f" || rm "$f"
done
我更喜欢 fuser
而不是 lsof
,因为它允许您查询单个文件。