查找给定年龄的文件夹,然后过滤给定大小并删除匹配的文件夹?

查找给定年龄的文件夹,然后过滤给定大小并删除匹配的文件夹?

一段时间以来我一直遇到这个问题。这是我最终想出的似乎可行的方法,尽管我的管道能力非常有限。

我猜这是实现我的目标的一个糟糕方法,是否有一些更简单的方法可以更有效地做到这一点?

$ find /home/data/cam*/* -maxdepth 0 -type d -mtime +30 \
    -exec du -sm {} \;| awk '{if ( $1 > 3000 ) print $2}' | xargs rm -rf

答案1

其实还不错。假设该/home/data/cam*/* -maxdepth 0部分很好,并且假设您的目录名称不包含换行符,我会这样做:

find /home/data/cam*/* -maxdepth 0 -type d -mtime +30 -exec du -sm {} + | \
    awk '$1 > 3000' | cut -f 2- | xargs rm -rf

-exec du -sm {} +是一种优化,它不会du针对每个目录运行。并awk '$1 > 3000' | cut -f 2-确保如果您的目录名称包含空格,这仍然有效。

相关内容