小编Mar*_*ars的帖子

递归遍历目录并对目录中的文件运行命令

我试图反编译包含在某个目录中的所有 Java 类,从目录的顶部开始。

目录下有很多子目录,每个子目录的深度都不一样。

我想要做的是进入每个目录,如果内容是带有后缀的文件.class,则运行反编译命令,这将在同一目录中创建一个反编译文件。

我已经尝试了以下但他们没有达到我所追求的。

第一种方法是:

for dir in ./*; do ( ( if [[ -d $dir ]]; then cd "$dir"; fi ) && ( for f in "$dir"; do ( if [[ -f $f && $f == *".class"* ]]; then jad "$f"; fi ); done ) ); done
Run Code Online (Sandbox Code Playgroud)

这里的问题是它不是递归的。也许这可以以递归的方式进行调整?

第二种方法简单得多,但它输出顶级目录中的文件。虽然这可能没问题,但不幸的是,我有一些具有相同名称但在不同包中的类,因此该解决方案也不起作用:

find . -type f -name "*.class" | while read filename; do echo $filename; done
Run Code Online (Sandbox Code Playgroud)

可以调整其中之一来实现我想要的吗?如何将第一个命令转换为递归操作?

linux unix java bash command-line

6
推荐指数
1
解决办法
3409
查看次数

标签 统计

bash ×1

command-line ×1

java ×1

linux ×1

unix ×1