2015-03-19 73 views
1

所以我在一个目录中有一堆不同的文件,我想刮掉每个文件名的最后5个字符。Linux修剪最后5个字符的文件名

比如我有一个名为

README.md?dl=1 
mod.cpp?dl=1 
CHANGELOG_RU.txt?dl=1 

的目录中的文件,他们需要被替代命名

README.md 
mod.cpp 
CHANGELOG_RU.txt 

那么,有没有一个Linux命令,我可以运行,将做到这一点的所有文件和文件夹中的子目录中的文件?

+0

'mmv *?dl = 1'#1''我认为应该有效。 – erip 2015-03-19 01:03:17

回答

1

使用bash内置插件:

$ ls 
README.md?dl=1 mod.cpp?dl=1 
$ for file in *; do mv "$file" "${file:0:((${#file}-5))}"; done 
$ ls 
README.md mod.cpp 

启用globstar触发递归行为。

0

试试这个

shopt -s globstar 
rename 's/.....$//' ** 

请注意,您将需要bash版本4或更高版本才能使用globstar

Ubuntu 10和Fedora 12或更高版本应该包含Bash 4或更高版本。

+0

这是否有效取决于发行版;不是每个人都使用相同版本的重命名。 – tink 2015-03-19 01:32:04