Bash - 按名称和大小列出和排序文件及其大小

jao*_*jao 5 sorting size bash


我试图找出如何按名称和大小排序文件列表.
如何使用" 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
Run Code Online (Sandbox Code Playgroud)

如何列出所有没有目录的文件,添加文件大小,先按文件名排序,然后按大小排序?

谢谢你的帮助

icy*_*com 18

你可以用这个:

find -type f -printf "%f  %s %p\n"|sort
Run Code Online (Sandbox Code Playgroud)

说明:

  • -type f仅查找文件
  • -printf以特定格式打印输出:
    • %f打印文件名
    • %s打印文件大小
    • %p打印整个文件名(即带有前导文件夹) - 如果需要,可以省略它

然后按照上面给出的顺序运行排序(即文件名,然后是文件大小,然后是文件路径).输出将是这样的(显示输出的一部分):

...
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
....
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助


kev*_*kev 8

您可以使用该sort命令

$ find -type f -printf $'%s\t%f\n' | sort -k2,2 -k1,1n
Run Code Online (Sandbox Code Playgroud)

按第二个字段(名称)排序,然后按数字排序第一个字段(大小).