我有两组文件,组织如下:
#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