.fasta 파일 이름 변경

.fasta 파일 이름 변경

다음과 같은 구조를 가진 약 2000개의 fasta 파일이 있습니다.

Name_ID#_Name2_ID1...2000.fasta

파일 이름 순서를 다음과 같이 변경하고 싶습니다.

Name2.Name_ID#_ID1...2000.fasta

누구든지 내가 이것을 달성할 수 있는 방법에 대한 제안이 있습니까?

답변1

이 문제를 해결하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 다음과 같습니다.

#!/bin/bash

for i in *.fasta; do
    tokens=( $(echo "${i}" | sed -e 's/_/ /g') )
    newName="${tokens[2]}.${tokens[0]}_${tokens[1]}_${tokens[3]}'"

    echo "mv ${i} ${newName}"
done

.fasta이 스크립트는 현재 디렉터리에서 ;로 끝나는 모든 파일을 반복합니다. 루프를 통과할 때마다 변수에는 ${i}현재 파일 이름이 포함됩니다.

다음으로 스크립트는 파일 이름의 sed밑줄( )을 _공백으로 변경하고 이를 토큰 배열로 저장합니다. 라는 파일의 경우 Name_ID1_Name2_ID1000.fasta다음과 같이 끝납니다.

tokens[0]='Name'
tokens[1]='ID1'
tokens[2]='Name2'
tokens[3]='ID1000.fasta'

newName다음으로, 이러한 태그와 원하는 주문에 대한 설명을 기반으로 스크립트가 생성됩니다. 마지막으로 스크립트는 mv이름 바꾸기를 수행하는 데 사용되는 명령을 인쇄합니다.

스크립트를 실행하면 수행할 작업이 인쇄됩니다. 원하는 대로 작동하는지 확인할 수 있습니다. 그렇다면 다음을 제거할 수 있습니다 echo.

mv "${i}" "${newName}"

다시 실행해 보세요. 이렇게 하면 실제로 이름 바꾸기가 수행됩니다.

관련 정보