如何在Linux/Unix中将多个文件从一个扩展名重命名为另一个扩展名?

use*_*340 8 unix linux file-rename

我有一些以'.1'结尾的文件,例如:

example.file.ex1.1
example.file.ex2.1
example.file.ex3.1
Run Code Online (Sandbox Code Playgroud)

有没有一种方法,我可以快速重命名他们都没有在结尾(例如example.file.ex1,example.file.ex2等)" 1.1' ?

谢谢!

Gil*_*not 12

是的,尝试重命名:

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

-n如果您的测试有效,请删除(干运行模式开关).

警告http://pix.toile-libre.org/upload/original/1377510865.png 还有其他同名的工具,可能会也可能不会这样做,所以要小心.


如果运行以下命令(linux)

$ file $(readlink -f $(type -p rename))
Run Code Online (Sandbox Code Playgroud)

你有一个结果

.../rename: Perl script, ASCII text executable
Run Code Online (Sandbox Code Playgroud)

那么这似乎是正确的工具=)

如果没有,为了使它成为默认(通常已经是这种情况)on Debian和衍生出来Ubuntu:

$ sudo update-alternatives --set rename /path/to/rename
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的是,这个工具最初是由Perl的父亲Larry Wall编写的.


Ale*_*-A. 5

纯粹的bash解决方案:

for curFile in example.file.*.1; do
    mv -- "$curFile" "${curFile:0:-2}"
done
Run Code Online (Sandbox Code Playgroud)