Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 检测是否使用今天的日期创建了文件,然后删除旧文件_Linux_Bash_Shell - Fatal编程技术网

Linux 检测是否使用今天的日期创建了文件,然后删除旧文件

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 {

我有一个脚本,可以删除特定目录中超过+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 {} \;
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