Linux的tree命令如何按文件类型排序?tree --help中未找到对应选项
如何用tree命令按文件类型排序
嘿,我懂你的烦恼!tree命令的默认帮助里确实没给出直接按文件类型排序的选项,不过咱们可以通过管道结合其他命令来实现这个需求,下面给你几个实用的方法:
方法1:结合sort命令按文件后缀排序
先让tree输出完整的文件路径,再用sort命令按后缀分组:
tree -f | sort -t '.' -k 2
tree -f:让tree输出每个文件/目录的完整路径,方便后续排序识别后缀sort -t '.' -k 2:以.作为分隔符,按第二列(也就是文件后缀)排序
注意:没有后缀的文件(比如README、无后缀配置文件)会排在最前面,目录也会混在结果里,如果想区分目录和文件,看下面的方法。
方法2:先显示目录树形,再按类型排序文件
如果希望先展示所有目录的树形结构,再按类型列出文件,可以分两步执行:
# 先输出目录的树形结构 tree -d # 再输出所有文件并按后缀排序 tree -f --noreport | grep -v '/$' | sort -t '.' -k 2
tree -d:只显示目录的树形结构tree -f --noreport:输出完整路径并去掉最后的统计行数grep -v '/$':过滤掉以/结尾的目录,只保留文件- 最后用sort按后缀排序
方法3:用find命令替代(更灵活的排序)
如果不需要严格的树形结构,只是想按类型罗列文件/目录,find命令配合sort会更灵活:
find . -print | sort -t '.' -k 2
这个命令会列出所有文件和目录,按后缀排序,缺点是没有tree的树形缩进,但胜在简单直接。
总的来说,tree本身确实没有内置的按类型排序参数,但通过和sort、grep这些工具配合,完全能实现你想要的效果~
内容的提问来源于stack exchange,提问作者HIPPO LD




