在不存在的目录上使用“find”

在不存在的目录上使用“find”

/my-directory如果不存在,是否有一种简单的方法可以让它默默地不执行任何操作?

find /my-directory -type f -mtime +14 -print0 | xargs -r0 rm

版本:

  • 查找:GNU findutils 4.5.10
  • bash 4.2.53

答案1

您可以放弃findwith的错误报告2>/dev/null,或者您可以完全避免运行该命令:

test -d /my-directory && find /my-directory -type f -mtime +14 -print0 | xargs -r0 rm

作为轻微的优化和更清晰的代码,某些版本(包括您的版本)可以直接为您find执行:rm

test -d /my/directory && find /my-directory -type f -mtime +14 -delete

答案2

您可以使用,

find /my-directory -type f -mtime +14 -print0 2>/dev/null | xargs -r0 rm

说明:

2> /dev/null意味着将 stderr 重定向到/dev/null.

  • /dev/null是空设备,它接受您想要的任何输入并将其丢弃。它可用于抑制任何输出。

答案3

print0在这里没用xargs -r 0find有内置的功能:

[ -d /my-directory ] && find /my-directory -type f -mtime +14 -exec rm {} +

或者,当您使用 GNU find 时,@terdon 建议使用此变体:

[ -d /my-directory ] && find /my-directory -type f -mtime +14 -delete

相关内容