我只想删除最近 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 天前。