Mac 터미널의 폴더에 있는 여러 파일에 대해 동일한 명령을 실행하는 방법은 무엇입니까?

Mac 터미널의 폴더에 있는 여러 파일에 대해 동일한 명령을 실행하는 방법은 무엇입니까?

Mac 터미널의 폴더에 있는 여러 파일에 대해 동일한 명령을 실행하는 방법은 무엇입니까? 이러한 파일의 이름은 24538_7#1.fq, 24538_7#2.fq등과 유사합니다 .24538_7#3.fq24538_7#4.fq

명령은 다음과 같습니다:

sed -n '\|@.*/1|{N;N;N;p;}' 24538_7#2.fq > 24538_7#2_paired1.fq
sed -n '\|@.*/2|{N;N;N;p;}' 24538_7#2.fq > 24538_7#2_paired2.fq

파일 이름에는 카운터가 포함되므로 당연히 파일 이름을 변경해야 합니다.

명령을 작성하려고 하는데 파일 이름을 바꾸는 데 멈췄습니다. 이 명령에 대한 나의 노력은 다음과 같습니다.

for file in 24538_7#*.fq; do sed -n '\|@.*/1|{N;N;N;p;}' "$file" > "${file/fq/fq}"; done

(PS-저는 MacOS를 사용합니다)

답변1

모든 파일의 이름이 비슷하다고 가정하면 다음을 사용할 수 있습니다.

for file in 24538_7#*.fq; do
    sed -n '\|@.*/1|{N;N;N;p;}' "$file" > "${file%.fq}_paired1.fq"
    sed -n '\|@.*/2|{N;N;N;p;}' "$file" > "${file%.fq}_paired2.fq"
done

또는 (이미 시도한 내용에 따라)

for file in 24538_7#*.fq; do
    sed -n '\|@.*/1|{N;N;N;p;}' "$file" > "${file/.fq/_paired1.fq}"
    sed -n '\|@.*/2|{N;N;N;p;}' "$file" > "${file/.fq/_paired2.fq}"
done

경고하다: 이는 특정 사례 및 특정 파일 이름에만 적용됩니다.

관련 정보