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


13

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

我有2000个文件,如下所示:

file.1.pdb
file.2.pdb
file.3.pdb

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

file.pdb.1
file.pdb.2
file.pdb.3

你不是在说bash吗?
avazula

4
@avazula否,请阅读这篇文章:en.wikipedia.org/wiki/Batch_renaming
Ali Razmdideh

@PerlDuck yes;)
Ali Razmdideh


2
嘿,亲密的选民-你们是否真的认为我们只需要在[batch-rename]标签中添加一个问题?除了使用的想法之外,链接的帖子中是否有任何实际可帮助解决此问题的任务的内容rename?在我看来,如果批量重命名问题具有特定的细节,我们应该只提供特定的答案
赞纳'18

Answers:


15

如果已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

该命令rename可以通过安装

sudo apt install rename

11

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

mmv '*.*.*' '#1.#3.#2' *.pdb

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

zmv -w '*.*.*' '$1.$3.$2' *.pdb

3
双方mmvzmv似乎颇为奇特的给我。您介意详细说明它们是什么以及它们是做什么的吗?
PerlDuck

2
我在他们的联机帮助页和示例中添加了链接。
αғsнιη

mmv很酷 rename尽管名称匹配方面的灵活性较差,但看起来似乎更适合于这种重命名。
JAB

11

使用Perl rename

rename -n 's/(\.\d+)(\.pdb)/$2$1/' *.pdb

快速说明:

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

1
大声笑。同样的想法。您快了48秒。
PerlDuck

1
@PerlDuck Lol,是的,同样的想法。答案也很好地补充了:您介绍了安装,我介绍了语法。
wjandrea

7

您可以使用以下脚本:

for i in `seq 1 2000`; do
mv file.$i.pdb file.pdb.$i
done

或此复制粘贴友好命令:

for i in `seq 1 2000`; do mv file.$i.pdb file.pdb.$i; done

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


5

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

首先安装thunar:

sudo apt install thunar

启动thunar,导航到包含文件的目录。然后选择所有这些。按F2

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

file\.(.+)\.pdb

file.pdb.$1

最后单击重命名按钮。

这种方式的优点是您可以在实际进行重命名之前获得可视化的预览。

thunar重命名对话框


1
您可以通过在命令前面加上LC_MESSAGES=POSIX例如来使大多数程序打印英文消息LC_MESSAGES=POSIX free。对于图形应用程序,其工作方式相同,尽管在默认配置下,如Nautilus这样的持久性应用程序,您需要先终止先前的实例nautilus -q
David Foerster '18

@DavidFoerster感谢您提及,图片已替换。
塞巴斯蒂安·史塔克

3

您可以为此使用renamefrom util-linuxrename.ul在ubuntu中调用该命令):

rename.ul .pdb '' *
rename.ul "file." "file.pdb." *

首先,将.pdb扩展名从末尾删除,然后将其重新插入中间。


1
很酷 我不知道rename.ul。语法有点奇怪,但是实际上可以按照您宣传的方式工作。加:它也有一个-n(不要触摸,只是告诉)开关。
PerlDuck
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.