所以我在一个目录中有一堆不同的文件,我想刮掉每个文件名的最后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