여러 파일에 대해 여러 입력을 사용하여 명령 실행

여러 파일에 대해 여러 입력을 사용하여 명령 실행

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

관련 정보