Bash-按名称和大小列出和排序文件及其大小
Bash-按名称和大小列出和排序文件及其大小,bash,sorting,size,Bash,Sorting,Size,我正在尝试找出如何按名称和大小对文件列表进行排序。 如何使用“du-a”按文件名和大小排序而不显示目录? 使用“du-a” 如何列出没有目录的所有文件,添加文件大小,并首先按文件名排序,然后按大小排序 感谢您的帮助您可以使用: find -type f -printf "%f %s %p\n"|sort 说明: -键入f仅查找文件 -printf以特定格式打印输出: %f打印文件名 %s打印文件大小 %p打印整个文件名(即,使用前导文件夹)-如果需要,可以省略此项 然后运行排序,
我正在尝试找出如何按名称和大小对文件列表进行排序。
如何使用“du-a”按文件名和大小排序而不显示目录?
使用“du-a” 如何列出没有目录的所有文件,添加文件大小,并首先按文件名排序,然后按大小排序 感谢您的帮助您可以使用:
find -type f -printf "%f %s %p\n"|sort
说明:
- -键入f仅查找文件
- -printf以特定格式打印输出:
- %f打印文件名
- %s打印文件大小
- %p打印整个文件名(即,使用前导文件夹)-如果需要,可以省略此项
希望这有帮助您可以使用
排序
命令
$ find -type f -printf $'%s\t%f\n' | sort -k2,2 -k1,1n
按第二个字段(名称)进行排序,然后按数字顺序排列第一个字段(大小)。正如其他答案所说,这实际上不是bash问题
du
坚持告诉你关于目录的事情:如果你把它指向一个目录,那么无论有没有-a
它都会告诉你关于它的事情
但是,如果您有GNUdu
,您可以告诉它从stdin读取以NUL结尾的文件名列表,因此您可以使用find
生成列表:find-print0 | du--files0 from=-
(这里不需要-a
标志)。(如果您没有--files0 from
选项,您仍然可以使用xargs
相对有效地调用du
;请参阅xargs
文档。)
如果您有GNU
du
,那么您可能有GNUfind
,它有@icyrock.com所描述的-printf
。就用这个吧。然后使用显式的排序
谢谢!这正是我所需要的。极好的回答也帮助了我。非常感谢。谢谢@Tastybrownies-很高兴它能帮上忙!要按文件名排序吗?或者路径?请注意,-printf
方法也需要这些排序
选项(经过必要的修改)。然后,您可能还希望删除字段,例如,使用cut
或类似的方法。您可以--max depth=1
到du
仅限于当前文件夹,但它仍会列出文件夹,而不会列出其内容。
...
XKBstr.h 18278 ./extensions/XKBstr.h
XlibConf.h 1567 ./XlibConf.h
Xlib.h 99600 ./Xlib.h
Xlibint.h 38897 ./Xlibint.h
Xlocale.h 1643 ./Xlocale.h
xlogo11 219 ./bitmaps/xlogo11
....
$ find -type f -printf $'%s\t%f\n' | sort -k2,2 -k1,1n