【发布时间】:2018-11-10 13:29:04
【问题描述】:
我正在努力用要删除的变量模式重命名一堆文件。
我有:
1B_ACTCGCTA-CCTAGAGT_L001_R1_001.fastq.gz
1B_ACTCGCTA-CCTAGAGT_L001_R2_001.fastq.gz
97C_TAAGGCGA-TTATGCGA_L001_R1_001.fastq.gz
97C_TAAGGCGA-TTATGCGA_L001_R2_001.fastq.gz
98A_S62_L001_R1_001.fastq.gz
98A_S62_L001_R2_001.fastq.gz
并且想拥有:
1B_R1_001.fastq.gz
1B_R2_001.fastq.gz
97C_R1_001.fastq.gz
97C_R2_001.fastq.gz
98A_R1_001.fastq.gz
98A_R2_001.fastq.gz
正如您所见,需要删除的模式是可变的,简单的匹配不起作用。 一个合乎逻辑的解决方法是排除第一个和第三个下划线或第一个下划线和字母“R”之间的所有内容。 不幸的是,我无法提出可以做到这一点的代码。 它可以是任何东西,只要它可以工作,重命名,bash for in 循环等......
感谢您的帮助, 否认
编辑:我试图使用 for 循环,但无法提供完整的代码来保留文件名的第二部分(字母“R”之后的所有内容)
for file in *.fastq.gz; do echo mv "${file}" "${file/_*/\/}"; done
【问题讨论】:
-
@Inian 完成,谢谢。
标签: bash ubuntu for-loop rename file-rename