如何保存搜索中找到的所有文件的统计信息?

如何保存搜索中找到的所有文件的统计信息?

我有一个 cron 可以从临时文件中删除具有特定模式的所有文件。

find /tmp/* -type f -iname magick-* -exec rm {} \;

现在,我想在删除所有文件之前记录它们的统计信息以供将来分析。

我尝试执行以下操作,但如果搜索输出超过一个,则它不起作用。

find /tmp/* -type f -iname magick-* -exec stat {} \;

如何使其适用于多个结果,以及如何将其记录到文件中?

答案1

你不显示什么当你尝试时就会发生。仅仅说“它不起作用”是永远不正确的。

我怀疑您的问题可能与以下一项或多项有关:

  • 引用模式或转义*.如果不这样做,并且当前目录中有一个或多个文件与该模式匹配,则该模式将扩展到匹配文件列表并替换到您的命令中,即不是你想要什么。
  • 不要用于/tmp/*find,只需使用/tmpfind它完全能够自行递归到给定目录;然后它还会查找名称以点开头的任何文件。

除此之外,如果rm可行,那么stat也应该可行。

另请注意,您可以将两者结合起来:

find /tmp -type f -iname 'magick-*' -exec stat {} \; -exec rm {} \;

首先stat将执行,然后,如果stat没有失败,rm则执行。

find您可以通过简单地将的输出重定向到您想要的任何文件来保存输出。

答案2

您可以一次性使用所有内容。也可以使用+相反的方法,因为它会立即执行整个操作,因此速度会更快。

find /tmp -type f -iname 'magick-*'-exec stat {} + -exec sh -c 'rm -rf  $@' _ {} + | tee -a log_to_file

相关内容