要删除文件夹下的文件,我们可以使用以下方法和 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