通过删除每个文件中的一个数字(1 和 2)来重命名多个文件

通过删除每个文件中的一个数字(1 和 2)来重命名多个文件

我有大约 200 个文件,其命名格式如下:

paired_dat_11_R1.fq
paired_dat_12_R2.fq 
paired_dat_121_R1.fq
paired_dat_122_R2.fq
paired_dat_851_R1.fq
paired_dat_852_R2.fq

我只是想将 重命名21,同时保持R1R2值不变:

paired_dat_11_R1.fq 
paired_dat_11_R2.fq 
paired_dat_121_R1.fq
paired_dat_121_R2.fq
paired_dat_851_R1.fq
paired_dat_851_R2.fq

答案1

您可以按如下方式使用mmv(使用 安装sudo apt install mmv):

mmv -n 'paired_dat_*2_R2*' 'paired_dat_#1\1_R2#2'

-n以便您可以预览更改而不将其应用到您的文件。如果您对输出满意,请运行不带 的命令-n

工作原理

mmv由文件名匹配部分('paired_dat_*2_R2*'此处)和替换部分('paired_dat_#1\1_R2#2'此处)组成。

在第一部分中,我们使用通配符来匹配文件名的各个部分,从而可以使用这些匹配来重命名文件。

上面的命令中*使用了通配符,表示“匹配任意字符”。第一个命令匹配和*之间的字符,而第二个命令匹配到 文件名末尾的字符。paired_dat_2_R2*2_R2

然后,每个匹配项都可以在替换部分中使用,#后跟与匹配项对应的升序数字。因此,#1对应于第一个匹配项*#2第二个匹配项*。由于第一个*匹配项最多为2不包括它,因此#1在替换部分中使用本质上会将其删除。然后,我们添加1_R21应该被转义,因此我们使用\1),然后我们将文件名的其余部分添加为#2

您可以在终端中运行以查看更多详细信息man mmv


还有一个使用 Nautilus 的 GUI 选项,类似于阿图尔·梅尼尔德建议他的回答

  • 打开 Nautilus。

  • 导航到包含您的文件的目录。

  • 选择您的文件。

  • right-click并选择改名或按F2

  • 在弹出的窗口中选择查找和替换文本

  • 在里面现有文本字段输入:2_R2

  • 在里面用。。。来代替字段输入:1_R2

  • 单击Replace后您的文件将被重命名!

鹦鹉螺重命名

与往常一样,首先在文件的复制部分上进行测试,以确保其按预期工作。

答案2

安装Perlrename命令,如果它尚不存在(默认情况下它不在我的系统上):

sudo apt install rename

运行此命令来执行您描述的更改:

rename 's/2_R2/1_R2/' paired_dat*.fq

语法相当于sed命令

另请参阅此主题在 Unix 和 Linux 上。

答案3

您可以使用克鲁萨德的 MultiRename。它接受????单个字符,并且像上面的答案一样,您可以在应用它们之前查看结果。它本质上只是一个 GUI krename

相关内容