我有一堆文件,其中包含括号中的前缀代码。我想把这些前缀变成后缀,像这样:
Finance-(4BF)-001.doc --> Finance-001-4BF.doc
Corporate-(K04)-001.doc --> Corporate-001-K04.doc
我之前编写了一个非常简单的 VBScript 来在 Windows 机器上执行此操作,但现在我需要在 Linux 上执行此操作。经过一些繁琐的搜索后,我找不到一种简单而优雅的方法来将正则表达式应用于文件名并使用正则表达式匹配重命名它。
到目前为止,我有这个:
#!/bin/bash
for i in *.doc
do
x=${i//[\(\)]/}
echo "$i renames to: $x"
done
这个的输出是:
Corporate-(K04)-001.doc renames to: Corporate-K04-001.doc
Finance-(4BF)-001.doc renames to: Finance-4BF-001.doc
我知道上面的正则表达式只是将括号 () 从文件名中去掉......但肯定有一种方法可以匹配它们的内容(例如\((\w)\)
),然后在重命名命令中使用该匹配项(例如$1
)?
作为一个 Linux 新手,我不明白x=${...}
在做什么,因为我不知道它叫什么,所以我无法谷歌它。我认为它正在对字符串应用正则表达式,i
但在那种情况下,为什么我不能从中提取匹配项$1
等等$2
?
谢谢!