重命名具有相同基本名称的所有文件

时间:2016-09-13 23:33:52

标签: bash glob

当我制作乳胶文档时,会创建多个具有相同基本名称但扩展名不同的文件。 如果我想重命名原始文件,我还必须重命名该文件夹中的每个其他文件。

有没有办法做到以下几点?

mv file_basename.* file_newname.[whatever was globbed]

2 个答案:

答案 0 :(得分:1)

让我们考虑一下包含这些文件的目录:

$ ls
file_basename.a  file_basename.b  file_basename.c

现在,让我们运行perl rename实用程序来重命名文件:

$ prename 's/file_basename/file_newname/' *
$ ls
file_newname.a  file_newname.b  file_newname.c

如您所见,所有文件都有新名称。

prename,有时称为rename,是perl包的一部分。

请注意,某些Linux发行版默认安装了不同且不兼容的版本。如果您有其中一个,则上述命令将不起作用。有关prename附带哪些发行版或如何在发行版中安装发行版的更多信息,请参阅here

答案 1 :(得分:0)

这是一个简单的bash脚本(我们称之为rename-prefix):

#!/bin/bash

basename="$1"
newname="$2"
for file in "$basename"*; do
    mv -iv -- "$file" "$newname${file#$basename}"
done

必须从文件所在的目录执行。你这样运行:

rename-prefix file_basename. file_newname.