我有一个运行良好的一行脚本,但是......
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