Linux 检测是否使用今天的日期创建了文件,然后删除旧文件
我有一个脚本,可以删除特定目录中超过+2天的文件。 我想在删除旧文件之前检查是否有一个创建日期为今天的文件。 这就是我所拥有的:Linux 检测是否使用今天的日期创建了文件,然后删除旧文件,linux,bash,shell,Linux,Bash,Shell,我有一个脚本,可以删除特定目录中超过+2天的文件。 我想在删除旧文件之前检查是否有一个创建日期为今天的文件。 这就是我所拥有的: #!/bin/bash find /var/backups/server1 -type f -mtime +2 -exec rm {} \; find /var/backups/server2 -type f -mtime +2 -exec rm {} \; find /var/backups/server3 -type f -mtime +2 -exec rm {
#!/bin/bash
find /var/backups/server1 -type f -mtime +2 -exec rm {} \;
find /var/backups/server2 -type f -mtime +2 -exec rm {} \;
find /var/backups/server3 -type f -mtime +2 -exec rm {} \;
find /var/backups/server4 -type f -mtime +2 -exec rm {} \;
find /var/backups/server5 -type f -mtime +2 -exec rm {} \;
所以基本上:
1.检查目录和文件中的日期。
2.如果肯定查找/var/backups/serverX-type f-mtime+2-exec rm{}\;
3.如果不是“执行scriptX”(可能是邮件通知)
谢谢 你可以这样做
find /var/backups/ -maxdepth 1 -type d -print0 | while read -rd '' dirname
do
arry=( $(find "${dirname}" -type f -atime 0) )
#Checks if there is a file that is updated today.
[ "${#arry[@]}" -ge 1 ] && find "${dirname}" -type f -mtime +2 -exec rm {} \;
done
因此,如果有一个日期为今天的文件,您希望删除较旧的文件如果没有文件,应该怎么办?是否删除前天以前的文件?或者什么也不做?换句话说,你想保留最新的一个,删除所有旧的吗?所以基本上:1.检查目录和文件的日期。2.如果肯定查找/var/backups/serverX-type f-mtime+2-exec rm{}\;3.如果不是“执行scriptX”(可能是邮件通知),谢谢!谢谢你的快速回复。问题是目录名并不总是服务器名,有50多个不同的服务器名。因此,我猜{1..4}do arry=($(find/var/backups/server“${I}”)中的“for I”在我的case@JoseluisVanta:请查看更新并使用
find-print0-read-d''
组合解析非标准名称“find…-atime 0”适用于过去24小时内访问的任何文件。更好“-mtime 0”(在过去24小时内修改的文件)或者,如果您的“find”版本支持“find.-type f-newerBt dayed”@GiovanniLenti,正如您正确地说,-newerBt
没有广泛实施,并且当出生时间未知时测试可能会失败。@sjsam:您仍然需要将-atime
更改为-mtime
?