如何按文件大小排序查找结果

Dai*_*vid 6 sorting shell find

如何按文件大小排序find命令的结果?

我试图对此find命令的结果进行排序:

find ./src -type f -print0
Run Code Online (Sandbox Code Playgroud)

我不想要目录的大小,我需要仅按大小排序的文件相对路径.

xav*_*xav 7

以下是使用find命令的方法:

find . -type f -exec ls -al {} \; | sort -k 5 -n | sed 's/ \+/\t/g' | cut -f 9
Run Code Online (Sandbox Code Playgroud)

以下是使用递归ls命令的方法:

ls -lSR | sort -k 5 -n
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想显示文件名:

ls -lSR | sort -k 5 -n | sed 's/ \+/\t/g' | cut -f 9
Run Code Online (Sandbox Code Playgroud)


Met*_*win 5

find -type f -exec du -sm {} \; | sort -nk1
Run Code Online (Sandbox Code Playgroud)

大小以 MiB 为单位,路径是相对的。


ant*_*tak 5

解析ls或其变体将增加不必要的复杂性。

按文件大小排序的文件路径:

find src -type f -printf '%s\t%p\n' | sort -n | cut -f2-
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 更改sort -nsort -nr以获取反向顺序
  • 这个问题有-print0但迎合包含换行符的文件名似乎很迂腐。

  • 问题提到了相对路径,更改%p%P将获得下的相对路径src/