2014-10-29 12 views
1

명령 command.py가 있으며 두 파일 (File_01_R1.fastq ~ File_01_R2.fastq)이 쌍으로 연결되어 있다고 가정 해보십시오. 한 쌍으로 실행되는 명령은 다음과 같습니다.여러 쌍의 파일에 대해 명령을 실행합니다.

command.py -f File_01_R1.fastq -r File_01_R2.fastq 

그러나 각 파일에는 R1과 R2 버전이 있습니다. 이 명령을 가지고있는 모든 파일을 검사 할 수 있도록하려면 어떻게해야합니까?

command.py -f File_02_R1.fastq -r File_02_R2.fastq 
command.py -f File_03_R1.fastq -r File_03_R2.fastq 

등등을 실행하는 방법은 무엇입니까?

for f in *_R1.fastq; do 
    echo command.py -f "$f" -r "${f%_R1.fastq}_R2.fastq" 
done 

이 바로 실행되도록 무엇을 인쇄합니다 :

+0

그들은 업데이트하지 않았습니다. – colin

답변

2

당신은 parameter expansion 간단하게 사용할 수있다. 결과에 만족하면 echo을 삭제하십시오.

2
# Loop over all R1.fastq files 
for f in File_*_R1.fastq; do 
    # Replace R1 with R2 in the filename and run the command on both files. 
    command.py -f "$f" -r "${f/_R1./_R2.}" 
done; unset -v f 

@gniourf_gniourf 그의 주석에서 알 수 있듯이 내 대답은 약간 덜 안전보다 자신의 (자신이 마지막에 고정되는 반면)는 파일 이름에 잘못된 위치에 일치 할 수있다.

+1

'File_somethingR1something_R1.fastq'라는 이름의 파일이 없기를 바랍니다. –