我试图找出如何按名称和大小排序文件列表。
如何使用“ du -a ”按文件名和大小排序而不显示目录?
使用“ du -a ”
1 ./locatedFiles
0 ./testDir/j.smith.c
0 ./testDir/j.smith
1 ./testDir/sampleFunc/arrays
2 ./testDir/sampleFunc
0 ./testDir/j.smith.txt
0 ./testDir/testing
0 ./testDir/test2
0 ./testDir/test3
0 ./testDir/test1
0 ./testDir/first/j.smith
0 ./testDir/first/test
1 ./testDir/first
1 ./testDir/second
1 ./testDir/third
6 ./testDir
如何列出所有没有目录的文件,添加文件大小,先按文件名排序,然后按大小排序?
感谢您的帮助
答案 0 :(得分:18)
您可以使用:
find -type f -printf "%f %s %p\n"|sort
说明:
然后按照上面给出的顺序运行排序(即文件名,然后是文件大小,然后是文件路径)。输出将是这样的(显示输出的一部分):
...
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
....
希望这有帮助
答案 1 :(得分:8)
您可以使用sort
命令
$ find -type f -printf $'%s\t%f\n' | sort -k2,2 -k1,1n
按第二个字段(名称)排序,然后按数字排序第一个字段(大小)。
答案 2 :(得分:1)
正如其他答案到目前为止所说,这不是一个真正的重击问题。
du
几乎坚持要告诉你有关目录的信息:如果你把它指向一个目录,那么无论有没有-a
它都会告诉你它。
如果你有GNU du
,你可以告诉它从stdin读取一个NUL终止的文件名列表,这样你就可以使用find
来生成列表:{{1 (这里你不需要find ... -print0 | du --files0-from=-
标志)。 (如果您没有-a
选项,仍然可以使用--files0-from
相对有效地调用du
;请参阅xargs
文档。)
如果你有GNU xargs
,你可能有GNU du
,其中find
由@ icyrock.com描述。只是使用它。然后使用明确的-printf
。