如何在批量重命名操作中移动文件名中的数字?

use*_*758 13 command-line batch-rename

在过去的几个小时里,我一直试图弄清楚如何重命名文件。

我有 2000 个文件是这样的:

file.1.pdb
file.2.pdb
file.3.pdb
Run Code Online (Sandbox Code Playgroud)

我想将这些文件重命名为:

file.pdb.1
file.pdb.2
file.pdb.3
Run Code Online (Sandbox Code Playgroud)

Per*_*uck 16

如果你已经rename安装,你可以使用

rename -n 's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # just watch what WOULD happen
rename    's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # actually rename the files
Run Code Online (Sandbox Code Playgroud)

该命令rename可以通过安装

sudo apt install rename
Run Code Online (Sandbox Code Playgroud)


wja*_*rea 11

使用 Perl rename

rename -n 's/(\.\d+)(\.pdb)/$2$1/' *.pdb
Run Code Online (Sandbox Code Playgroud)

快速解释:

  • *.pdb匹配所有以.pdb. (由外壳完成)
  • (\.\d+)匹配一个文字点,然后匹配一个或多个十进制数字。括号创建一个匹配组。
  • $2$1 颠倒第一个和第二个匹配组。
  • -n无动作(模拟)。如果输出看起来不错,请在没有此标志的情况下再次运行该命令。


αғs*_*нιη 11

通过mmv(通过通配符模式重命名多个文件)很容易:

mmv '*.*.*' '#1.#3.#2' *.pdb
Run Code Online (Sandbox Code Playgroud)

zmvzsh壳; 这是一个允许重命名的模块;见ZMV 示例

zmv -w '*.*.*' '$1.$3.$2' *.pdb
Run Code Online (Sandbox Code Playgroud)

  • `mmv` 和 `zmv` 对我来说似乎都很奇特。你介意详细说明一下它们是什么以及它们做什么吗? (3认同)
  • 我添加了指向他们的联机帮助页和示例的链接。 (2认同)

Ali*_*deh 8

你可以使用这个脚本:

for i in `seq 1 2000`; do
mv file.$i.pdb file.pdb.$i
done
Run Code Online (Sandbox Code Playgroud)

或者这个复制粘贴友好的命令:

for i in `seq 1 2000`; do mv file.$i.pdb file.pdb.$i; done
Run Code Online (Sandbox Code Playgroud)

要使用上述命令,请将所有 2000 个文件放在一个文件夹中,然后在该目录中打开终端,然后在其中运行上述命令。


Seb*_*ark 5

最近,默认文件管理器 nautilus 收到了一个批量重命名对话框。它的功能还不够强大,无法做你想做的事。但幸运的是有 thunar,一个可以安装的替代文件管理器。使用 thunars 重命名对话框,您可以使用 GUI 执行您想要的操作。

首先安装thunar:

sudo apt install thunar
Run Code Online (Sandbox Code Playgroud)

启动 thunar,导航到包含您的文件的目录。然后全部选中。按F2

在打开的对话框中,再次选择所有文件。将模式更改为“搜索和替换”和“名称和后缀”。选中“正则表达式”。现在使用以下作为搜索和替换模式:

file\.(.+)\.pdb
Run Code Online (Sandbox Code Playgroud)

file.pdb.$1
Run Code Online (Sandbox Code Playgroud)

最后点击重命名按钮。

这种方式的优点是您可以在实际进行重命名之前直观地预览将发生的情况。

thunar 重​​命名对话框