我在以下目录中有文件:
./PBMCs/SRR1_1.fastq
./PBMCs/SRR1_2.fastq
./Monos/SRR2.fastq
./Monos/SRR3.fastq
我想根据键值对文件将SRR#
更改为一个信息更丰富的名称:
SRR1 pbmc-1
SRR2 mono-1
SRR3 mono-2
并将文件重命名为:
./PBMCs/pbmc-1_1.fastq
./PBMCs/pbmc-1_2.fastq
./Monos/mono-1.fastq
./Monos/mono-2.fastq
我所能想到的就是循环浏览原始文件列表,然后循环浏览name-change.txt文件的行并替换字符串。然而,我不确定如何实现这一点,也不确定这是否是一个好的方法。
假设所有*.fastq都是一个子目录深度,这应该可以正常工作:
while read old new; do
for fastq in ./*/"$old"*.fastq; do
new_name=$new${fastq##*/"$old"}
echo mv "$fastq" "${fastq%/*}/$new_name"
done
done <name-change.txt
如果输出看起来不错,请删除echo
。