经过长时间的搜索和反复试验,我创建了一个脚本
#!/bin/bash
find /home/SHARE/temp/* -mtime +10 -exec rm {} \;
创建后,它会被执行并删除所有超过 10 天的文件,但保留这些文件所在的文件夹。
我把它写在 cron 中,现在我发现它什么也没做。
也许我在 cron 中写错了,但是当我尝试手动执行它时,我得到了:
rm query: remove write-protected regular file
并要求确认删除,然后说
Permission denied
如何做到不仅删除文件而且删除文件夹?
如何自动运行具有权限sudo的脚本?
感谢您的帮助
答案1
要删除下面的空目录但不包括 /home/SHARE/temp,请使用
find /home/SHARE/temp -depth -mindepth 1 -type d -empty -exec rmdir {} \;
要仅删除原始命令中的文件,请-type f
包括
find /home/SHARE/temp -type f -mtime +10 -exec rm {} \;
如果使用 cron 中的这些命令替换\;
为\\;
答案2
我相信您需要通过修改以下行来强制删除文件,因为该文件是只读的:
find /home/SHARE/temp/* -mtime +10 -exec rm {} \;
到
find /home/SHARE/temp/* -mtime +10 -exec "rm -f" {} \;
除此之外,您还可以使用 root 用户执行脚本。