![Linux 抑制 Bash 脚本中的查找错误以及文件删除](https://linux22.com/image/1493464/Linux%20%E6%8A%91%E5%88%B6%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E6%9F%A5%E6%89%BE%E9%94%99%E8%AF%AF%E4%BB%A5%E5%8F%8A%E6%96%87%E4%BB%B6%E5%88%A0%E9%99%A4.png)
我有一个运行良好的一行脚本,但是......
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