假设我的Ubuntu-Linux目录中有三个文件。其中一个是在音乐播放器中打开的,但是其他两个在任何应用程序中都没有打开,并且没有使用任何进程。
我想删除这两个文件。换句话说,我想检测任何进程未使用的文件,然后删除它们。
我试过了:
rm !(lsof | grep "thePath")
但失败了。此处lsof
存在问题。
有什么办法吗?
答案 0 :(得分:4)
你的语法非常错误。在shell中,与许多其他编程语言不同,在括号中放置一个命令(就好像它是一个函数调用)不会产生结果。
相反,你需要这样的东西:
for f in *; do
fuser -s "$f" || rm "$f"
done
我首选fuser
超过lsof
因为它允许您查询单个文件。