如何使用通配符列出所有子目录中的文件?

8

ls * 可以列出子目录中的所有文件。

ls *.pdb 只能列出当前目录中扩展名为pdb的所有文件。

那么如何列出子目录中扩展名为pdb的所有文件呢?

我的子目录名为 1, 2, 3, .... 我希望输出也包括目录信息,这样我就可以把输出作为一组输入文件。例如,输出应该像这样:

1/a.pdb 1/b.pdb 1/c.pdb 2/a.pdb 2/b.pdb 2/c.pdb 3/a.pdb 3/b.pdb 3/c.pdb


ls */*.pdb。您还可以启用 dotglob 并使用 ** 作为所有子目录的通配符(使用 bash)。否则,您可以使用 find -type f -name "*.pdb" 来定位嵌套子目录中的所有 .pdb 文件。 - David C. Rankin
是的,谢谢!你能发一下答案吗? - lanselibai
1
如果您有多个子目录,可以使用“find”命令:find . -name \*.pdb - Robert
2个回答

10

3个解决方案:

简单的glob

ls */*.pdb

使用 进行递归

shopt -s globstar
ls **/*.pdb

使用进行递归

find . -type f -name '*.pdb'

0

也试试这个:

locate */*.pdb

这是为之前创建的数据库而设计的。

如果你编写了一些Python代码,然后立即使用两者,你就可以看到它们之间的区别。

locate */*.py
ls */*.py

在创建索引之前,无法确定 updatedb 是否已被执行,而且创建索引是必须的。 - Gilles Quénot

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