다음과 같이 두 개의 파일 세트가 구성되어 있습니다.
#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