簡體   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