重命名文件 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 命令。确认命令看起来符合预期后,注释掉实际命令。
我有一堆名为
的文件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 命令。确认命令看起来符合预期后,注释掉实际命令。