linux - 用于递归列出包含具有特定扩展名的文件的文件夹中的所有子目录的 Shell 脚本

标签 linux bash shell sh

我有一个名为a的文件夹,它可能有一个或多个子目录,子目录可能有多个子目录,依此类推。我想知道如何编写一个 shell 脚本来列出包含具有特定扩展名的文件的所有子目录。

所以,可能是这样的

A -> B -> C

  -> D -> f2.txt

       -> F -> f3.txt

  -> E -> G -> H -> f4.txt

因此只会列出 D、F 和 H 目录。实际上,我需要通过列出目录树来快速找到特定 java 类的包名称。例如,在前面的示例中,A.E.G.H 是与 A.D 相同的包,但 A.E.G 不是包,因为 G 只包含子目录 H 没有文件。

最佳答案

我认为你需要find命令。你可以像这样使用,

find . -name '*.txt'

这里,

. - 点(.) 是当前目录。您还可以指定开始的路径。

-name - 要查找的文件名。

您还可以使用-maxdepth选项来限制递归查找的深度。通常,find 会递归地查找文件。

更新:

如果您想列出目录,

find . -name '*.txt' -exec dirname {} \;

关于linux - 用于递归列出包含具有特定扩展名的文件的文件夹中的所有子目录的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23991467/

相关文章:

bash - Shell 相当于 Perl 的死

相对于复活节及时计算事件

linux - 将 .dat 文件中的表格转换为 HTML 表格

c++ - 在 Linux Mint QT 上构建 C++ Allegro 5 失败

c - 为什么客户端API和内核的setsockopt第一个参数的类型不同?

linux - bash 脚本中的段错误

linux - Linux 中的精确 grep -f 命令

linux - 如何使用 shell 命令在不知道其名称的情况下导航到单个子目录?

linux - bash 迭代打印一行中的第一列到第 n 列

windows - 根据 bash 中的操作系统运行不同命令的最佳方法