【问题标题】:How to capture both success and error messages for linux "find" command如何捕获linux“find”命令的成功和错误消息
【发布时间】:2021-11-12 02:42:55
【问题描述】:

我正在尝试运行自动删除脚本来释放远程服务器上的空间。 我想使用的命令是:
find . -atime +30 -mtime +30 -type f -delete

我还想要捕获哪些文件已成功删除,哪些文件因访问问题而失败。我该怎么做?我认为下面的这个命令可能只处理失败,但我不确定。
find . -atime +30 -mtime +30 -type f -delete 2>failed_deletions.txt

【问题讨论】:

  • 建议您在发布之前先进行一些研究,因为关于同一主题有很多问题/答案/讨论。无论如何,请阅读here。此外,您可以查看exec 和trap 组合来捕获脚本执行。
  • 如果你想要一个成功删除失败的日志,我会编写一个程序,它可以直接使用系统调用来执行它自己的迭代、文件状态和文件删除,而不是强制 find 和 @ 987654328@ 做他们不打算做的事情。 (feedbackauditing 是有区别的。)

标签: linux bash shell unix find


【解决方案1】:

find 开箱即用不会打印它处理的文件。如果要列出文件,请在 -delete 之前添加 -print-ls

这显然会打印它处理的所有文件,包括由于某种原因未能删除的文件。

将标准输出重定向到不同的文件应该很容易发现; command >stderr 2>stdout

【讨论】:

    【解决方案2】:

    性能较差,但应该做你想做的事:

    find . -atime +30 -mtime +30 -type f -exec rm -v {} \; >successful.txt 2>failed.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多