我在特定目录下有几个文件。这些是文件
idex.1.ebwt idex.2.ebwt idex.3.ebwt idex.4.ebwt idex.rev.1.ebwt idex.rev.2.ebwt
我想将文件名更改为idex
保持index
名称的其余部分相同。基本上我想替换idex
为index
有任何一行命令吗?
答案1
你可以用一个简单的for
-loop 和一些 shell 魔法来做到这一点:
for file in idex.*; do
mv "$file" "index${file#idex}"
done
是的,您也可以将其放入一行中。 ;)
${var#pattern}
计算结果$var
为删除了前导pattern
(其中pattern
是glob(7)
模式)。存在四种变体(符合 POSIX):
${var#pattern}
求值为删除$var
前导pattern
(非贪婪)。${var##pattern}
求值为删除$var
前导pattern
(贪婪)。${var%pattern}
计算结果为删除$var
尾随pattern
(非贪婪)。${var%%pattern}
计算结果$var
为删除尾随pattern
(贪婪)。
非贪婪和贪婪的区别在于,如果您设置$var
为foo.bar.baz
,${var%.*}
则将计算为foo.bar
,但${var%%.*}
将计算为foo
。这是因为${var%.*}
将搜索最短模式匹配.*
(因此从最后的 .
结束),${var%%.*}
将在哪里搜索最长一(因此从第一的 .
结束)。
您只需记住以下内容即可帮助自己记住哪个版本是非贪婪版本和贪婪版本更长(#
分别%
两次)搜索更长匹配。
答案2
如果您使用的是主要的 Linux 发行版或安装了标准util-linux
包,那么这段代码应该可以满足您的需求。
rename idex index idex*