2개의 파일을 입력으로 사용하여 프로그램을 실행해야 하며 abc0000.faa/abc0000.fna에서 abc6000.faa/abc6000.fna까지 6000개의 파일이 포함된 1개의 출력이 필요합니다. 또한 입력과 동일한 파일 이름을 가지지만 확장자가 .paml인 출력 파일이 필요합니다.
이는 파일 0000에 대한 전체 명령의 예입니다.
./pal2nal.pl abc0000.faa abc0000.fna -codontable 11 -output paml > abc0000.paml
모든 파일에 대해 동일한 명령을 자동으로 실행하는 방법이 있습니까? "for-in-do" 같은 거요?
감사해요!
답변1
일련의 입력 파일( .faa
예: 파일)을 반복하여 다른 입력 파일과 출력 파일 이름을 생성할 수 있습니다.
for f in *.faa; do
./pal2nal.pl "$f" "${f%.faa}.fna" -codontable 11 -output paml > "${f%.faa}.paml"
done
이 ${f%word}
구문은 가장 짧은 후행 구성요소 일치를 제거합니다 word
.
답변2
주문하다
seq -w 0 6000
0부터 6000까지의 모든 숫자가 생성됩니다. 숫자가 4자리 미만인 경우 왼쪽이 0으로 채워집니다. 명령 대체를 사용하여 명령을 for 루프로 래핑할 수 있습니다.
for n in $(seq -w 0 6000) ;do
./pal2nal.pl abc$n.faa abc$n.fna -codontable 11 -output paml > abc$n.paml
done