递归排序的文件列表(Linux)

4
我希望能够遍历一个目录,包括其子目录以及子目录的子目录等等,仅打印文件名(不包括目录名)。我还想让结果每行显示一个文件名,并按字母顺序排序。
请注意,使用“ls -LR”或“ls -xLR”命令无法实现此功能,因为“ls”将结果格式化成了一种表格形式。
各位,如果您可以编辑它,请给出您的建议。
3个回答

5

进入您想要搜索的目录,然后运行:

find . -type f -exec basename {} \; | sort

按名称排序,只列出文件名(没有路径),并且只列出文件(不包括目录)。
详细信息:
  • find 默认递归查找。
  • -type f 只会打印文件而不是目录。
  • -exec basename 对结果运行 basename 命令(因此不会打印路径)。
  • sort 将对结果进行排序。

@Jack,是的,没错。你试过了吗?希望这能帮到你 :) - jimm-cl
好的,事实证明我有多个在不同目录下命名相同的文件,所以相对路径名还是很好用的。移除“-exec basename {} ;”似乎并不能达到我想要的效果。 - Jack
@Jack,如果你想保留相对路径,只需执行 find . -type f | sort - jimm-cl
好的,但是"./"字符是什么意思?那不是一个运行命令吗?(最后一个问题,我保证) - Jack
@Jack,点号“.”代表当前目录。也就是说,你的搜索从当前目录开始,递归地进行。 - jimm-cl
1
@jim +1,但是 . 是多余的,-printf '%f\n'-exec basename {} \; 更快/更好,可以避免子 shell 和不必要的命令。 - Reinstate Monica Please

0

应该可以。你输错了吗?你用的是哪个版本的Linux?请参考下面的示例

testserver:~ # find /etc -type f | sort
/etc/.pwd.lock
/etc/DIR_COLORS
/etc/HOSTNAME
/etc/Muttrc 
....
....
/etc/zmd/zmd.conf
/etc/zshenv
/etc/zshrc
/etc/zypp/zypp.conf
testserver:~ #

(附言:抱歉,我试图将其添加为评论,但我的声望不足50,所以作为答案添加)


0

关于“find”和“sort”实用程序怎么样?

find <dir> -type f |sort

找不到文件:f:没有那个文件或目录。 - Jack
@Jack,请将<dir>更改为实际目录,例如.$HOME - jimm-cl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接