更改目录中文件的名称

更改目录中文件的名称

我在特定目录下有几个文件。这些是文件

idex.1.ebwt  idex.2.ebwt  idex.3.ebwt  idex.4.ebwt  idex.rev.1.ebwt  idex.rev.2.ebwt

我想将文件名更改为idex保持index名称的其余部分相同。基本上我想替换idexindex

有任何一行命令吗?

答案1

你可以用一个简单的for-loop 和一些 shell 魔法来做到这一点:

for file in idex.*; do
    mv "$file" "index${file#idex}"
done

是的,您也可以将其放入一行中。 ;)

${var#pattern}计算结果$var为删除了前导pattern(其中patternglob(7)模式)。存在四种变体(符合 POSIX):

  1. ${var#pattern}求值为删除$var前导pattern(非贪婪)。
  2. ${var##pattern}求值为删除$var前导pattern(贪婪)。
  3. ${var%pattern}计算结果为删除$var尾随pattern(非贪婪)。
  4. ${var%%pattern}计算结果$var为删除尾随pattern(贪婪)。

非贪婪和贪婪的区别在于,如果您设置$varfoo.bar.baz${var%.*}则将计算为foo.bar,但${var%%.*}将计算为foo。这是因为${var%.*}将搜索最短模式匹配.*(因此从最后的 .结束),${var%%.*}将在哪里搜索最长一(因此从第一的 .结束)。

您只需记住以下内容即可帮助自己记住哪个版本是非贪婪版本和贪婪版本更长#分别%两次)搜索更长匹配。

答案2

如果您使用的是主要的 Linux 发行版或安装了标准util-linux包,那么这段代码应该可以满足您的需求。

rename idex index idex*

相关内容