【问题标题】:Rename files Mac Terminal Command Line to match list重命名文件 Mac 终端命令行以匹配列表
【发布时间】:2021-01-22 10:30:41
【问题描述】:

我有一堆被命名的文件

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

【问题讨论】:

  • 你用的是什么外壳?列也是逗号分隔的吗?
  • 重击?我认为?是的,它保存为 csv

标签: macos command-line terminal


【解决方案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 命令。确认命令看起来符合预期后,注释掉实际命令。

【讨论】:

    猜你喜欢
    • 2017-04-08
    • 2021-07-23
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多