如何按名称查找文件夹,然后按大小排序

时间:2015-01-11 11:20:29

标签: shell sorting

对于我确定的许多排列中常见问题的道歉。不过我要问的是,因为到目前为止我没有找到问题的确切答案。

目标:查找包含字符串“foo”的所有文件夹,然后按大小排序(或者:不是排序,只返回大于N的文件夹)。

或者我可以问:如何按大小排序'find'的输出。 (确切的问题 已在Stackoverflow上询问,但到目前为止尚未收到答案。)

这是我尝试过的......

返回大于100 MB的所有文件夹。不起作用,因为文件夹大小始终为0?

find / -iname "*foo*" -size +100M

使用find的输出选项'-ls',然后排序。也不起作用:它是有序的,但不是按大小排序。

find / -iname "*foo*" -ls | sort

任何帮助表示赞赏!

编辑:想想我刚刚找到答案,右边显示的相关主题......再次道歉,我知道我应该更彻底地搜索:/

3 个答案:

答案 0 :(得分:0)

您可以将此findstatsort

一起使用
find / -iname "*foo*" -type d -size +100M -exec stat -c '%n:%s' {} \; | sort -t: -k2,2 -rn | cut -d ':' -f1

答案 1 :(得分:0)

find / -iname "*foo*" -type d -ls| sort -nk7

-n用于数字排序。 -k7是要排序的字段(使用包含大小的数字,7在bash shell中)

find . -iname "*foo*" -type d -ls|sort -nk7|sed "s/^[^:]*:[^\ ]*\ //g" 

如果您只需要文件夹名称

答案 2 :(得分:0)

根据文件夹的大小,您似乎可以理解其中文件大小的总和,以及它的所有子目录。如果是这样,du最适合该任务。

du / | grep foo | sort -n