我需要复制文件并重命名它们。 将“N”替换为我在环境变量中的另一个字符串。
对于以下文件;
myFile_N_something.cfc_
我可以使用正则表达式在 bash 脚本中使用 for/do/done 块来完成此操作;
for files in *.cfc_;
do
cp "$files" "${files/_N_/_$theID_}";
done
但是... 我还需要从文件名的最末尾去掉尾随的“_”,所以它最终会是;
myFile_32_something.cfc
(假设我的环境变量中有“32”)
我当然可以再做一个单独的步骤...但我希望“提升”我的正则表达式技能,并在可能的情况下用一个命令来完成。
一如既往的感谢!
最近
bash
支持真正的正则表达式与条件表达式的=~
运算符:
for files in *.cfc_; do
[[ $files =~ (.*)_N_(.*)_ ]] &&
cp "$files" "${BASH_REMATCH[1]}_${theID}_${BASH_REMATCH[2]}"
done