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

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

我在 Windows 机器上。但是,我安装了 Cygwin 并更新了环境变量路径,这样我就可以通过 Windows 终端运行 Linux 命令。

我想要执行以下命令:

wc -l * > total 

在许多文件夹中。我的设置如下:

父文件夹有 24 个子文件夹,每个子文件夹分别命名为 PKA1、PKA2 等,最多为 PKA24

我想进入每个子文件夹。但在每个子文件夹中,我需要进一步深入。我需要再向下三层(此时每个目录中只有一个子文件夹),但路径如下所示:

PKA1/timestep_size/v_0.001/500eV

然后在这个深度的每个子文件夹中,有 4 个文件夹:

O1
O3
Si3
Si5

我想进入每个目录并执行我的命令。有没有快速的方法可以做到这一点?

答案1

如果你知道有多少个嵌套文件夹,你可以尝试

wc -l * > file
wc -l */* >> file
wc -l */*/* >> file

ETC。

答案2

使用 FOR 循环。

从父文件夹中执行以下操作:

FOR /R %G IN (*) DO wc -l %G >>total

这应该对该目录中的每个文件执行命令。

/R 开关使其遍历每个文件并>>附加,而不是覆盖文件的输出。

更多信息:

http://ss64.com/nt/for_r.html http://ss64.com/nt/syntax-redirection.html

相关内容