You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何递归获取所有文件列表(不含所属目录)并按字母排序?

如何递归获取所有文件列表(不含所属目录)并按字母排序?

嘿,我懂你现在的痛点——之前用ls -a只能列出目录本身,ls -aR虽然能递归遍历,但文件都是跟着各自的目录分组显示的,没法直接拿到所有文件名统一按字母排序的列表对吧?

给你两个实用的解决方案,优先推荐第一个,更稳妥:

方案一:用find命令(推荐)

这是最可靠的方式,能完美处理各种特殊文件名(比如带空格、换行的),而且逻辑清晰:

find . -type f -printf "%f\n" | sort

拆解一下每个部分的作用:

  • find .:从当前目录开始递归遍历所有内容
  • -type f:只筛选出文件(排除目录、链接等其他类型)
  • -printf "%f\n":只输出文件名本身,不带任何路径前缀
  • | sort:把所有文件名按字母顺序排序

如果需要包含隐藏文件的话,这个命令也能自动处理,因为find默认会遍历隐藏目录和文件,不用额外加参数。

方案二:用ls配合文本处理(适合简单场景)

如果你更习惯用ls,也可以通过管道结合grep来实现,但要注意这种方式在文件名有特殊字符时可能出问题:

ls -aR | grep -v '/$' | grep -v '^[.]' | sort

解释一下:

  • ls -aR:递归列出所有内容(包括隐藏项)
  • grep -v '/$':过滤掉目录行(目录行结尾是/)
  • grep -v '^[.]':过滤掉开头的目录标识行(比如./dir:这种格式)
  • | sort:最后统一排序

为啥之前的ls命令满足不了需求?因为ls -aR是按目录层级输出的,每个目录下的文件都跟着目录名展示,没法直接得到全局排序的文件名集合,而find可以直接提取所有文件名后再统一排序,逻辑更直接。

备注:内容来源于stack exchange,提问作者Nuno Fonseca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:43:08