macOS의 여러 파일 이름에서 파일 이름의 특정 부분을 제거하는 방법

macOS의 여러 파일 이름에서 파일 이름의 특정 부분을 제거하는 방법

이 파일들을 디렉토리에 넣었습니다.

Mabel-A10_GTAGAGGA_L001_R1_001.fastq.gz
Mabel-A5_GGACTCCT_L001_R1_001.fastq.gz
Mabel-A11_GCTCATGA_L001_R1_001.fastq.gz
Mabel-A6_TAGGCATG_L001_R1_001.fastq.gz

출력이 다음과 같기를 원합니다.

Mabel-A10_L001_R1_001.fastq.gz
Mabel-A5_L001_R1_001.fastq.gz
Mabel-A11_L001_R1_001.fastq.gz
Mabel-A6_L001_R1_001.fastq.gz

답변1

이름을 바꿔볼 수 있습니다.

for i in *
do
o=$(echo $i|awk -F_ '{print $1,$3,$4,$5}')
mv "$i" "$o"
done

답변2

이 스크립트는 작업을 수행하기 위해 일련의 "mv" 명령을 실행하는 셸 명령을 출력합니다.

for FILE in *.fastq.gz
do
    L="${FILE%%_*}_"
    R="${FILE#${L}*_}";
    printf 'mv -vi "%s" "%s"\n' "$FILE" "$L$R"
done

한 번 실행하고 출력을 확인하십시오. 파일이 많으면 lessview 명령을 사용해야 할 수도 있습니다.

모든 것이 괜찮아 보이면 명령을 다시 실행하고 출력을 bash.

파일 이름의 첫 번째 밑줄 왼쪽에 있는 모든 항목과 밑줄 자체에 변수 L을 설정하여 작동합니다. 그런 다음 파일 이름 앞에서 L의 문자열을 제거하고 다음 밑줄까지 추가로 제거하여 문자열 R을 형성합니다.

mv -vi "Mabel-A10_GTAGAGGA_L001_R1_001.fastq.gz" "Mabel-A10_L001_R1_001.fastq.gz"
mv -vi "Mabel-A11_GCTCATGA_L001_R1_001.fastq.gz" "Mabel-A11_L001_R1_001.fastq.gz"
mv -vi "Mabel-A5_GGACTCCT_L001_R1_001.fastq.gz" "Mabel-A5_L001_R1_001.fastq.gz"
mv -vi "Mabel-A6_TAGGCATG_L001_R1_001.fastq.gz" "Mabel-A6_L001_R1_001.fastq.gz"

관련 정보