31

是否可以找到大小仅大于 x MB 的目录。假设,我想在 /home 下找到所有大小大于 1000MB 且只有 1 个 maxdepth 的目录,如何找到它?

4

2 回答 2

74

如果我正确地解释了您的问题,我认为这可能就是您想要的:

cd /home
du -sm * | awk '$1 > 1000'

这将显示/home包含超过 1000MB 的所有目录。如果您的版本du不支持-m,您可以使用du -sk并调整该awk位以查找超过 1,000,000KB 的...

于 2013-07-11T16:55:46.490 回答
3

根据手册页,该-k选项符合POSIX ,但该-m​​选项不符合。

所以以下内容更便携(即,如果你在 BSD 上,它仍然可以工作)但本质上是一样的:

du -sk * | awk -v m=1000 '$1 > 1024*m'

只需将 awk 变量m设置为您希望作为截止值的兆字节数。

我发现这对于移动一批文件非常有用,因此在这里发布是为了其他人的利益。

要扩展它以将所有符合您条件的文件移动到另一个目录,您可以调整awk命令以仅打印移动所需的位(不包括大小),然后循环:

# moving all directories meeting the size criteria to another location:
for d in $(du -sk * | awk -v m=1000 '$1 > 1024*m {print $2}')
do 
    mv $d $DESTINATION
done
于 2021-11-10T16:00:49.693 回答