如何将当前目录中具有特定扩展名的所有文件重命名为另一个扩展名?

And*_*rew 2 filesystems bash ubuntu directory rename

可能的重复:
重命名多个文件(更改扩展名)

假设在我的当前/工作目录中有五个文件:

file1.xvg
file2.xvg
file3.xvg
file1.eps
file2.eps
Run Code Online (Sandbox Code Playgroud)

有什么方法可以重命名当前/工作目录中的所有文件,扩展名为.xvg并给它们新的扩展名.txt(单独留下.eps文件)?可以用这个来完成renamemvmmv也许?我正在使用 Ubuntu Linux。谢谢!

Lev*_*von 10

对于您的特定问题,此命令将起作用。验证您对建议的重命名是否满意,然后删除-n以继续操作。

rename -n 's/\.xvg$/.txt/' *.xvg
Run Code Online (Sandbox Code Playgroud)

这基本上意味着对于.xvg当前目录中具有扩展名的所有文件,查找以 ( $)结尾的文件.xvg并将该部分名称更改为.txt.

更多细节和下面的例子。


是的,该rename命令会为您执行此操作。一个简短的示例,其中我将所有带有.html扩展名的文件重命名为.html_bak,忽略目录中的其他文件。

我会强烈建议使用-n命令行选项第一(下文解释),看看有什么变化将执行实际的命令之前发生。

我从什么开始:

$ ls
a.html  a.txt  b.html  htmlfile
Run Code Online (Sandbox Code Playgroud)

-n手段做一个“试运行” ..只是表明什么会改变,不改变任何事情!

$ rename -n 's/\.html$/.html_bak/' *
a.html renamed as a.html_bak
b.html renamed as b.html_bak
Run Code Online (Sandbox Code Playgroud)

原来的文件还在。

$ ls
a.html  a.txt  b.html  htmlfile
Run Code Online (Sandbox Code Playgroud)

现在是真实的:

$ rename  's/\.html$/.html_bak/' *
Run Code Online (Sandbox Code Playgroud)

文件已重命名。

$ ls
a.html_bak  a.txt  b.html_bak  htmlfile
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我*用来指定重命名操作要考虑的文件。我本可以将其限制为.html仅使用*.html.

有关更多信息,请参阅重命名手册页