我只想改变这个
cc211_AMBER_13062012i.II cc211_GROMOS_13062012i.II
cc211_CHARM_13062012i.II cc211_OPLS_13062012i.II
Run Code Online (Sandbox Code Playgroud)
至
cc211_AMBER_15062012i.II cc211_GROMOS_15062012i.II
cc211_CHARM_15062012i.II cc211_OPLS_15062012i.II
Run Code Online (Sandbox Code Playgroud)
我试过了,
find -name "*.13 *" | xargs rename ".13" ".15"
Run Code Online (Sandbox Code Playgroud)
3和第二个星号之间通常没有空间,这就是我所能看到的斜体.基本上有很多答案可以解释当它在文件名末尾时做什么,其中asterix似乎有效,但在这里我无法使其工作.
你得到的任何东西都会让我的生活变得更轻松!
编辑1:试用
-bash-4.1$ ls
cc211_AMBER_13062012.II cc211_GROMOS_13062012.II
cc211_CHARM_13062012.II cc211_OPLS_13062012.II
-bash-4.1$ rename 's/_13/_15/' cc*
-bash-4.1$ ls
cc211_AMBER_13062012.II cc211_GROMOS_13062012.II
cc211_CHARM_13062012.II cc211_OPLS_13062012.II
Run Code Online (Sandbox Code Playgroud)
谢谢,
查理
Ant*_*ony 25
这个怎么样:
for i in *.II; do mv $i $(echo $i | sed 's/_13/_15/g'); done
Run Code Online (Sandbox Code Playgroud)
这将替换_13为_15所有带扩展名的文件.II
关于sed的更多信息在这里.
che*_*ner 19
纯粹的bash解决方案:
for i in cc*; do
mv "$i" "${i/_13/_15}"
done
Run Code Online (Sandbox Code Playgroud)
rename 's/_13/_15/' cc*
Run Code Online (Sandbox Code Playgroud)
应该做你想做的.正则表达式s/_13/_15/替换_13为_15以'cc'开头的所有文件.
$ ls
cc211_AMBER_13062012.II cc211_GROMOS_13062012.II
cc211_CHARM_13062012.II cc211_OPLS_13062012.II
$ rename 's/_13/_15/' cc*
$ ls
cc211_AMBER_15062012.II cc211_GROMOS_15062012.II
cc211_CHARM_15062012.II cc211_OPLS_15062012.II
Run Code Online (Sandbox Code Playgroud)
这只适用于较新的perl版本rename.检查您的版本man rename.如果页面顶部显示
Perl程序员参考指南
你有perl版本.如果它说:
Linux程序员手册
你有标准(旧版)版本.
对于旧版本,命令应为:
rename _13 _15 cc*
Run Code Online (Sandbox Code Playgroud)