默认情况下我有一个名为/tmp/foo_primary.bar
的文件或用户指定的任何其他文件名。
如何使用bash重命名文件(变量),这样如果它包含字符串primary
,它将更改为secondary
,如果不包含,只需附加_secondary
?
由于
答案 0 :(得分:1)
您不需要正则表达式,模式可以:
#!/bin/bash
filepath=$1
if [[ $filepath != */* ]] ; then # File in PWD.
filepath=./$filepath
fi
filename=${filepath##*/}
if [[ $filename = *primary* ]] ; then
newname=${filename/primary/secondary}
else
newname=$filename'_secondary'
fi
mv "$filepath" "${filepath%/*}"/"$newname"
检查man bash
中的“参数扩展”,了解${...}
构造的解释。