所以我在一個目錄中有一堆不同的文件,我想刮掉每個文件名的最後5個字符。Linux修剪最後5個字符的文件名
比如我有一個名爲
README.md?dl=1
mod.cpp?dl=1
CHANGELOG_RU.txt?dl=1
的目錄中的文件,他們需要被替代命名
README.md
mod.cpp
CHANGELOG_RU.txt
那麼,有沒有一個Linux命令,我可以運行,將做到這一點的所有文件和文件夾中的子目錄中的文件?
所以我在一個目錄中有一堆不同的文件,我想刮掉每個文件名的最後5個字符。Linux修剪最後5個字符的文件名
比如我有一個名爲
README.md?dl=1
mod.cpp?dl=1
CHANGELOG_RU.txt?dl=1
的目錄中的文件,他們需要被替代命名
README.md
mod.cpp
CHANGELOG_RU.txt
那麼,有沒有一個Linux命令,我可以運行,將做到這一點的所有文件和文件夾中的子目錄中的文件?
使用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
觸發遞歸行爲。
試試這個
shopt -s globstar
rename 's/.....$//' **
請注意,您將需要bash
版本4或更高版本才能使用globstar
。
Ubuntu 10和Fedora 12或更高版本應該包含Bash 4或更高版本。
這是否有效取決於發行版;不是每個人都使用相同版本的重命名。 – tink 2015-03-19 01:32:04
'mmv *?dl = 1'#1''我認爲應該有效。 – erip 2015-03-19 01:03:17