![查找 + 如何删除仅存在于特定文件夹中的文件](https://linux22.com/image/1672908/%E6%9F%A5%E6%89%BE%20%2B%20%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E4%BB%85%E5%AD%98%E5%9C%A8%E4%BA%8E%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6.png)
要删除文件夹下的文件,我们可以使用以下方法和 find
find /home -type f -delete
但是如何递归删除临时文件夹下存在的文件?
假设我们有以下临时路径的示例
/home/bla/bla/temp
/home/test/temp
/home/subf/subf/subf/temp
.
.
.
/home/1/temp
如何更改查找语法以便仅删除temp
目录下的文件
目标是使用 find 命令来匹配临时文件夹并删除临时目录下的文件
答案1
以下命令将在名为temp
及 之下的任何目录中查找常规文件/home
。
find /home -type f -path '*/temp/*'
要真正删除它们:
find /home -type f -path '*/temp/*' -delete
笔记:
默认情况下
find
不跟踪符号链接。请参阅man 1 find
选项-L
和-H
(如果支持)-P
。-delete
不可移植。如果您的find
不支持-delete
,请使用-exec rm {} +
.-delete
更好,不仅仅是因为它不会创建额外的进程。它更安全,因为它(至少-delete
在 GNU 中实现)消除了竞争条件,在这种条件下,有人可能会通过在找到文件并find
删除它之间将某个目录更改为符号链接来让您删除错误的文件。我们的命令不遵循符号链接的事实在这一点上无关紧要。find
rm
find