是否可以找到只有大于x MB的目录.假设,我想找到只有大小超过1000MB的所有目录,在/ home下只有1个maxdepth,如何找到它?
twa*_*erg 60
如果我正确地解释你的问题,我认为这可能是你想要的:
cd /home
du -sm * | awk '$1 > 1000'
Run Code Online (Sandbox Code Playgroud)
这将显示/home包含超过1000MB的所有目录.如果您的版本du不支持-m,您可以使用du -sk并调整该awk位以查找超过1,000,000KB而不是...
根据联机帮助页,该-k选项符合POSIX标准,但该-m选项不符合。
因此,下面的代码更加可移植(即,如果您使用的是 BSD,它仍然可以工作),但本质上是相同的:
du -sk * | awk -v m=1000 '$1 > 1024*m'
Run Code Online (Sandbox Code Playgroud)
只需将 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
Run Code Online (Sandbox Code Playgroud)