重命名文件 Mac 终端命令行以匹配列表

Rename files Mac Terminal Command Line to match list

我有一堆名为

的文件

190307_M05898_0065_000000000-CC66F_1_11570BP0321L01_1.fastq.gz

190307_M05898_0065_000000000-CC66F_1_11570BP0321L01_2.fastq.gz

190307_M05898_0065_000000000-CC66F_1_11570BP0322L01_1.fastq.gz

190307_M05898_0065_000000000-CC66F_1_11570BP0322L01_2.fastq.gz

等...

它们都是用_1 和_2 来区分的。我用粗体突出了每对之间的区别。我制作了一个 .csv,其中一列包含 bold ID 和我想用其替换整个字符串的新 ID。

使用命令行我怎么说“从第 1 列中找到这个特定的字符串并用第 2 列中的新 ID 替换”但是还要保留特定字符串之后的所有内容(即 _1.fastq.gz 或 _2.fastq.gz)

我想结束:

BK1_1.fastq.gz

BK1_2.fastq.gz

BN46_1.fastq.gz

BN46_2.fastq.gz

编辑:

如果有帮助,我还创建了一个包含完整文件名的 csv,而不仅仅是 ID

如果您的文件包含完整的文件名,您可以执行以下操作:

IFS=",";
while read fil fil1;
do 
   echo "mv -f $fil $fil1";
   # mv -f "$fil" "$fil1"
done < file

将输入字段分隔符设置为“,”(IFS),然后将文件(csv 文件)读入 while 循环,将每个 csv 作为变量 fil 和 fil1 读取。使用这些变量打印所需的 mv 命令。确认命令看起来符合预期后,注释掉实际命令。