bash:根据正则表达式重命名文件

时间:2015-02-19 14:45:26

标签: regex linux

默认情况下我有一个名为/tmp/foo_primary.bar的文件或用户指定的任何其他文件名。

如何使用bash重命名文件(变量),这样如果它包含字符串primary,它将更改为secondary,如果不包含,只需附加_secondary

由于

1 个答案:

答案 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中的“参数扩展”,了解${...}构造的解释。