例如,我的工作目录中有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
文件包含目录中需要重命名的new_4.1.txt
文件名,并且文件包含文件的新名称(顺序相同)。
奇怪的是我的代码无法正常工作。当我运行命令时,它显示错误
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
有没有办法自动执行此任务?任何帮助将不胜感激。谢谢!!
您的源文件中至少有一个来自Windows系统,因此具有不同的行尾(CR-LF而不是CR)。您需要对文本文件进行后处理以解决此问题
dos2unix new_name_4.1.txt
或者
tr -d '\r' <new_name_4.1.txt >tmp && mv -f tmp new_name_4.1.txt
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句