Dai*_*vid 6 sorting shell find
如何按文件大小排序find命令的结果?
我试图对此find命令的结果进行排序:
find ./src -type f -print0
Run Code Online (Sandbox Code Playgroud)
我不想要目录的大小,我需要仅按大小排序的文件相对路径.
以下是使用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)
find -type f -exec du -sm {} \; | sort -nk1
Run Code Online (Sandbox Code Playgroud)
大小以 MiB 为单位,路径是相对的。
解析ls或其变体将增加不必要的复杂性。
按文件大小排序的文件路径:
find src -type f -printf '%s\t%p\n' | sort -n | cut -f2-
Run Code Online (Sandbox Code Playgroud)
笔记:
sort -n为sort -nr以获取反向顺序这个问题有-print0但迎合包含换行符的文件名似乎很迂腐。
问题提到了相对路径,更改%p为%P将获得下的相对路径src/