![如果目录没有更新的文件,则删除目录](https://linux22.com/image/141654/%E5%A6%82%E6%9E%9C%E7%9B%AE%E5%BD%95%E6%B2%A1%E6%9C%89%E6%9B%B4%E6%96%B0%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%8C%E5%88%99%E5%88%A0%E9%99%A4%E7%9B%AE%E5%BD%95.png)
我只想删除最近 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 天前。