我一直在尝试根据表格重命名一些特定文件,但没有成功。它要么重命名所有文件,要么给出错误。
该目录包含数百个以长条形码命名的文件,我只想重命名包含模式 _1_ 的文件。
例子
barcode_1_barcode_SL484171.fastq.gz barcode_2_barcode_SL484171.fastq.gz barcode_1_barcode_SL484370.fastq.gz barcode_2_barcode_SL484370.fastq.gz
我的表格.txt
期望输出:
描述1.R1.fastq.gz 描述2.R1.fastq.gz
如您在表中所见,每个描述有两个文件,但我只想重命名具有 _1_ 模式的文件。
我试过的代码:
for i in *_1_*.fastq.gz; do read oldname newname; mv "$oldname" "$newname".R1.fastq.gz; done < mytable.txt
for i in $(grep '_1_' mytable.txt); do read -r oldname newname; mv ${oldname} ${newname}.R1.fastq.gz; done < mytable.txt
for i in $(grep '_1_' mytable.txt); do oldname=$(cut -f1 $i);newname=$(cut -f2 $i); ln -s ${oldname} ${newname}.R1.fastq.gz; done
最佳答案
while read -r oldname newname
do
if [[ $oldname =~ "_1_" ]]
then
mv $oldname $newname
fi
done < mytable.txt
关于bash - 在循环中重命名匹配模式的文件 - Bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68323157/