对于我确定的许多排列中常见问题的道歉。不过我要问的是,因为到目前为止我没有找到问题的确切答案。
目标:查找包含字符串“foo”的所有文件夹,然后按大小排序(或者:不是排序,只返回大于N的文件夹)。
或者我可以问:如何按大小排序'find'的输出。 (确切的问题 已在Stackoverflow上询问,但到目前为止尚未收到答案。)
这是我尝试过的......
返回大于100 MB的所有文件夹。不起作用,因为文件夹大小始终为0?
find / -iname "*foo*" -size +100M
使用find的输出选项'-ls',然后排序。也不起作用:它是有序的,但不是按大小排序。
find / -iname "*foo*" -ls | sort
任何帮助表示赞赏!
编辑:想想我刚刚找到答案,右边显示的相关主题......再次道歉,我知道我应该更彻底地搜索:/ 击>
答案 0 :(得分:0)
您可以将此find
与stat
和sort
:
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