假设我的Ubuntu-Linux的目录中有三个文件。其中之一在音乐播放器中打开,但另外两个未在任何应用程序中打开,并且未在任何进程中使用。
我想删除这两个文件。换句话说,我想检测没有被任何进程使用的文件,然后删除它们。
我试过这个:
rm !(lsof | grep "thePath")
Run Code Online (Sandbox Code Playgroud)
但它失败了。这里有问题lsof。
有什么办法吗?
你的语法完全错误。在 shell 中,与许多其他编程语言不同,将命令(就像函数调用一样)放在括号中不会产生其结果。
相反,你想要这样的东西:
for f in *; do
fuser -s "$f" || rm "$f"
done
Run Code Online (Sandbox Code Playgroud)
我fuser更喜欢它lsof,因为它允许您查询单个文件。
| 归档时间: |
|
| 查看次数: |
2428 次 |
| 最近记录: |