递归遍历目录,并在目录中的文件上运行命令

火星

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

该目录有许多子目录,每个子目录的深度都不同。

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

我已经尝试了以下方法,但是他们并没有达到我的目标。

第一种方法是:

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

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

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

find . -type f -name "*.class" | while read filename; do echo $filename; done

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

火星

我想出了一个对我有用的解决方案:

find . -type d | while read dir; do ( if [[ -d $dir ]]; then cd $dir && find . -maxdepth 1 -type f | while read f; do ( jad $f ); done fi ); done

不需要if语句来检查文件的正确类型,因为如果文件不是类文件,jad将不会执行反编译。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何遍历指定的每个目录并在文件上运行命令(Python)

递归遍历目录中的文件

遍历子目录并在每个子目录中运行命令

遍历子文件夹以在许多目录中运行命令

遍历目录并运行命令

Bash:遍历所有子目录并在某些文件上执行命令

在多个目录中的同名文件上运行命令

最好的方法在目录树中的每个文件上运行命令

递归遍历所有子目录,如果存在具有特定扩展名的文件,则在该文件夹中运行一次命令

对目录中的每个文件运行命令

查找文件并在文件目录中执行命令

在所有子目录中递归运行命令

如何递归遍历文件和目录

递归遍历目录并返回包含 Python 中的子目录和文件的嵌套列表

通过子目录递归运行命令

以递归方式在目录上运行命令

对目录中的所有文件运行R代码,并在单独的目录中输出所有文件

动态遍历目录中的文件

遍历目录中的大量文件

循环遍历目录中的文件

如何遍历目录中的文件?

递归查找目录中的文件

获取命令以在子目录中的所有文件上运行

如何遍历包含目录列表的文件并使用python在每个目录中执行命令

在目录中运行sudo命令

是否可以在目录A中运行tar命令,从而从目录C中的文件中在目录B中创建tar归档文件?

我需要一个Windows CMD来遍历目录中的文件夹并在每个文件夹上执行一条命令

对目录中的每个文件运行一系列命令

运行diff命令比较目录中的所有文件