[英]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.