在目录中嵌套 for 循环

在目录中嵌套 for 循环

我有两组文件,组织如下:

#first directory
/direc1/files

file0.1.tar.gz
file0.2.tar.gz
file0.3.tar.gz
file0.4.tar.gz
      .
      .
      .
file0.22.tar.gz

在这个目录中,我总共有242个文件。我当前运行 script.py 的嵌套命令如下:

for z in `seq 0 10`; do
for i in `seq 1 22`; do python script.py --l2 --ld-wind-cm 1 --annot  file${z}.${i} --thin-annot --out  file${z}.${i} --print-snps;done;done

如果你注意到的话,我已经file在这个循环中进行了硬编码。有没有一种方法可以在不file${z}.${i}使用变量的情况下运行它?

答案1

你的要求不太清楚。为什么两个循环跨越两个范围?不会

for FN in *.tar.gz; do echo python script.py --out "$FN"; done

足够了吗?echo如果对结果满意,请删除。

如果除了您想要处理的文件之外没有其他文件,“扩展名”也可能消失,for*.

答案2

如果除了您需要的文件之外还有其他 tar.gz 文件,您可以使用:

for i in file{0..10}.{1..22}.tar.gz; do python script.py --out "$i" --print-file; done

如果这些是文件夹中唯一的文件,那么这就足够了,并且适用于任何文件名。

for i in * ; do python script.py --out "$i" --print-file; done

如果这些是文件夹中唯一的 tar.gz 文件,但那里还有一些其他类型的文件,那么可以使用它,并且可以使用任何名称的 tar.gz 文件:

for i in *.tar.gz ; do python script.py --out "$i" --print-file; done

相关内容