我的要求与这个问题几乎相同:Shell script to delete paths超过n天 我的目录如下所示:
Jul 24 05:46 2013_07_24
Jul 31 22:30 2013_08_01
Sep 18 05:43 2013_09_18
Oct 07 08:41 2013_10_07
Run Code Online (Sandbox Code Playgroud)
我想删除所有超过 90 天的内容。根据上述线程中给出的解决方案,我在脚本中使用了以下内容:
find $BASE_DIR -type d -ctime +90 -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)
该脚本成功删除了目录,但也失败并出现以下错误:
find: 0652-081 cannot change directory to <actual_path>:
: A file or directory in the path name does not exist.
Run Code Online (Sandbox Code Playgroud)
这里唯一的事情是 $BASE_DIR 指向虚拟位置,而错误消息中的actual_path 指向实际位置。环境中有软链接。
尝试
find $BASE_DIR -mindepth 1 -maxdepth 1 -type d -ctime +90 -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)
这只会覆盖直接位于 $BASE_DIR 下的目录,但它应该避免生成该错误消息。