一段时间以来我一直遇到这个问题。这是我最终想出的似乎可行的方法,尽管我的管道能力非常有限。
我猜这是实现我的目标的一个糟糕方法,是否有一些更简单的方法可以更有效地做到这一点?
$ 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-
确保如果您的目录名称包含空格,这仍然有效。