예를 들어 작업 디렉터리에 100개의 파일 목록이 있습니다.
GCF_000021605.1_ASM2160v1_genomic.fa
GCF_001887455.1_ASM188745v1_genomic.fa
GCF_003719755.1_ASM371975v1_genomic.fa
GCF_000021625.1_ASM2162v1_genomic.fa
이름을 다음으로 바꾸고 싶습니다.
Vibrio_cholerae_O1_biovar_El_Tor_str._N16961_strain=N16961z
Vibrio_cholerae_O395_strain=O395
Vibrio_cholerae_M66-2_strain=M66-2
Vibrio_cholerae_O395_strain=O395
이러한 새 파일 이름은 디렉터리에 있는 원래 파일 이름 목록과 동일한 순서로 텍스트 문서에 위치합니다.
파일 이름을 완전히 바꾸는 방법이 있습니까?
while read -u 3 -r name1 && read -u 4 -r name2
do
mv "${name1}" "${name2}".fasta
done 3<old_name_4.txt 4<new_name_4.1.txt
old_name.4.txt
file에는 이름을 바꿔야 하는 디렉터리의 파일 이름이 포함되어 있으며, new_4.1.txt
file에는 동일한 순서로 된 파일의 새 이름이 포함되어 있습니다.
이상한 점은 내 코드가 작동하지 않는다는 것입니다. 명령을 실행하면 오류가 표시됩니다.
mv: cannot move 'GCF_000021605.1_ASM2160v1_genomic.fa' to 'Vibrio_cholerae_O1_biovar_El_Tor_str._N16961_strain=N16961'$'\r''.fasta': No such file or directory
이 작업을 자동화할 수 있는 방법이 있나요? 어떤 종류의 도움이라도 대단히 감사하겠습니다. 감사합니다! !
답변1
최소한 하나의 소스 파일은 Windows 시스템에 있으므로 줄 끝이 다릅니다(CR 대신 CR-LF). 이 문제를 해결하려면 텍스트 파일을 후처리해야 합니다.
dos2unix new_name_4.1.txt
또는
tr -d '\r' <new_name_4.1.txt >tmp && mv -f tmp new_name_4.1.txt