如果目录没有更新的文件,则删除目录

如果目录没有更新的文件,则删除目录

我只想删除最近 N 天内未更改的目录。我所说的更改是指包含比 N 更新的任何文件。

我构建了类似的东西/发现 但它并不完全符合我的要求。

答案1

我将循环遍历有问题的目录(这里是当前目录的每个子目录)并计算find输出的行数;如果该数字为零,则删除该目录。该find命令仅要求给定目录中小于“N”天的文件(在过去“N”天内修改过)。

N=3
for dir in */
do
  count=$(find "$dir" -type f -mtime -"$N" -print | wc -l)
  [ "$count" -eq 0 ] && echo rm -r -- "$dir"
done

echo如果结果看起来正确,请删除。

答案2

我的想法是这样的:

 touch -d "4 days ago" .reference_file  
 for dir in */  
 do  
   [ $dir -ot .reference_file ] && rm -rf "$dir"  
 done

首先,我们创建一个文件 .reference_file,创建日期设置为“4 天前”。

然后,对于该工作目录中的所有目录,我们检查其修改时间(-ot运算符)是否早于 .reference_file 的修改时间。

如果是 - 我们通过以下方式删除该目录rm -rf $dir

每次运行此脚本时,.reference_file 的修改日期将更新为始终为 4 天前。

相关内容