[英]Replace string in filename in bash
所以我有這個功能
ren_barrow(){
for file in *.clu
do
mv -f $file ${file//RELEASE/"$1"}
done
}
但是當我運行此文件時,如您所見,每個以.clu結尾的文件都會被重命名。
我想在mv
周圍放一個if語句,說如果文件名中包含RELEASE,然后繼續。 如果我沒有這個if陳述,則會收到錯誤訊息:
Cannot rename: $file and $file is the same file.
ren_barrow(){
for file in *.clu
do
# if $file grep "RELEASE"; then
mv -f $file ${file//RELEASE/"$1"}
# fi
done
}
您可以使用如下的mv
命令:
[[ "$file" != *"RELEASE"* ]] && mv -f "$file" "${file//RELEASE/$1}"
為什么不更改for
循環,以使您不必遍歷所有文件?
for file in *RELEASE*.clu
do
mv -f "$file" "${file//RELEASE/$1}"
done
更好的是,如果有,請使用rename
命令:
rename RELEASE "" *RELEASE*.clu
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.