Linux 抑制 Bash 脚本中的查找错误以及文件删除

Linux 抑制 Bash 脚本中的查找错误以及文件删除

我有一个运行良好的一行脚本,但是......

find $HOME/html/mydir/downloads/sec/*.zip  -mtime 2 -exec rm {} \;

如果找不到文件,就会生成错误,然后我的网络主机会向我发送一封毫无意义的电子邮件。因此,如果“错误”是“没有这样的文件或目录”,我想隐藏错误消息

我在想我可以做这样的事:

find $HOME/html/mydir/downloads/sec/*.zip 2>&1 | grep -v "No such file or directory" 

...但我不知道如何将其与我当前的脚本结合起来,以便如果找到文件(或者存在其他类型的错误),find 的输出仍然会转到 exec。

答案1

尝试:

find $HOME/html/mydir/downloads/sec/ -maxdepth 1 -name '*.zip' -mtime 2 -delete

find如果搜索未找到文件,则不会出现问题。如果您在命令行中指定的目录/文件不存在,则会出现问题。如上所示,解决方案是指定一个存在的目录并要求它搜索.zip文件。

另请注意,-exec rm {} \;可以用 替换-delete

顺便说一句,-mtime 2这仅适用于 2 天前的文件(四舍五入为整数)。如果你想删除以下文件:多于两天大,然后使用-mtime +2

答案2

简短的回答:不要使用-exec

$ find $HOME/html/mydir/downloads/sec/*.zip -mtime 2 | xargs -r rm

相关内容