0

我正在尝试根据在 shell 脚本中使用以下语句创建的日期删除 unix 中的文件夹内容。

find /mypath -mmin +$((60*24*1)) -exec rm -rf {} \;

我已配置为从 Control M 运行此脚本。这将删除文件夹,但脚本以错误代码 1 结尾。如何避免出现错误,以免我的工作失败?

find: '/mypath/Xdb/20170802_001028': No such file or directory find: '/mypath/Xdb/20170802_001027': No such file or directory find: '/mypath/Xdb/20170801_142539': No such file or directory

4

2 回答 2

2

我不明白你为什么用

min +$((60*24*1))   

用这个:

find /mypath -mtime +1 -exec rm -rf {} \;    

或者这个删除的目录没有检查它是否为空

find /mypath -mtime +7 -type d -print0 | xargs -0 rm -rf    

+7 删除旧的 then ,-7 从今天删除到 7

于 2017-08-07T20:50:35.993 回答
1

除了 SamOl 的回答之外,如果您想坚持原来的命令,那么您可以告诉 Control-M 接受字符串No such file or directory作为“OK”。

为此,只需在作业的最后一个选项卡中添加一个 On/Do Action def =

On Do Actions
Specific statement output    
Statement = *    
Code = *No such file or directory*    
Do = Set job to OK

这里有一个 YouTube 剪辑 - https://www.youtube.com/watch?v=Y3S7GdAwjQ8

于 2017-08-07T21:36:49.493 回答