use*_*220 4 linux bash cron rm find
我必须制作一个cronjob来删除特定目录中超过99天的文件,但我不确定文件名是由值得信赖的Linux用户制作的.我必须期待特殊字符,空格,斜线字符等.
以下是我认为可行的方法:
find /path/to/files -mtime +99 -exec rm {}\;
Run Code Online (Sandbox Code Playgroud)
但我怀疑如果有特殊字符或者它找到一个只读文件(cron可能无法以超级用户权限运行),这将失败.如果遇到这样的文件,我需要它继续下去.
Dav*_* W. 11
使用时-exec rm {} \;,空格,制表符,返回或特殊字符不应该有任何问题,因为直接find调用rm命令并一次传递一个文件的名称.
不会使用该命令删除目录,因为您没有将-r参数传递给它,而您可能也不希望这样.这可能最终会有点危险.-f如果您没有写入权限,您可能还希望包含参数以强制执行.以root身份运行cron脚本,你应该没问题.
我唯一担心的是你最终可能会遇到一个你不想删除的文件,但在过去的100天内没有被修改过.例如,用于停止工作中的自动构造序列的密码.有可能该文件在过去100天内未被修改,但一旦启动了自动编码序列,您就不希望因为密码丢失而将其归咎于该文件.
好的,更合理的可能是使用但很少修改的应用程序.也许某人的简历没有更新,因为他们持有当前的工作,等等.
所以,要小心你的假设.仅仅因为文件未在100天内被修改并不意味着它没有被使用.更好的标准(尽管仍然有问题)是文件是否在过去100天内被访问过.也许这是最后的命令:
find /path/to/files -atime +99 -type f -exec rm -f {}\;
Run Code Online (Sandbox Code Playgroud)
某些find命令有一个-delete参数可用于代替-exec rm参数:
find /path/to/files -atime +99 -delete
Run Code Online (Sandbox Code Playgroud)
这将删除找到的目录和文件.
还有一个小建议:第一周,保存在日志文件中找到的文件而不是删除它们,然后检查日志文件.这样,您可以确保不删除重要的内容.一旦你高兴,你不想触摸的日志文件中没有任何内容,你可以删除这些文件.一周后,如果您不想删除任何重要内容,您可以恢复find命令为您执行删除操作.
| 归档时间: |
|
| 查看次数: |
13977 次 |
| 最近记录: |