2015-03-19 70 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