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

ver*_*n21 2 bash perl rename

我有大约 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
Run Code Online (Sandbox Code Playgroud)

我只想将 重命名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
Run Code Online (Sandbox Code Playgroud)

Bea*_*nog 5

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

mmv -n 'paired_dat_*2_R2*' 'paired_dat_#1\1_R2#2'
Run Code Online (Sandbox Code Playgroud)

-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 选项,这与Artur Meinild在他的回答中建议的类似:

  • 打开鹦鹉螺。

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

  • 选择您的文件。

  • right-click并选择重命名或按F2

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

  • 现有文本字段中输入:2_R2

  • 替换为字段中输入:1_R2

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

鹦鹉螺重命名

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