查找 + 如何删除仅存在于特定文件夹中的文件

查找 + 如何删除仅存在于特定文件夹中的文件

要删除文件夹下的文件,我们可以使用以下方法和 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删除它之间将某个目录更改为符号链接来让您删除错误的文件。我们的命令不遵循符号链接的事实在这一点上无关紧要。findrmfind

相关内容