繁体   English   中英

bash:基于正则表达式重命名文件

[英]bash: rename a file based on a regex

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

如何使用bash重命名文件(变量),以便如果它包含字符串primary ,它将更改为secondary ,否则,只需追加_secondary

谢谢

您不需要正则表达式,可以使用模式:

#!/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 “参数扩展”以获取${...}构造的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM