我有一堆文件名
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,其中一列包含 粗体 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
答案 0 :(得分:1)
使用包含完整文件名的文件,您可以执行以下操作:
IFS=",";
while read fil fil1;
do
echo "mv -f $fil $fil1";
# mv -f "$fil" "$fil1"
done < file
将输入字段分隔符设置为“,”(IFS),然后将文件(csv 文件)读入 while 循环,将每个 csv 读取为变量 fil 和 fil1。使用这些变量打印所需的 mv 命令。确认命令看起来如预期后,注释掉实际命令。