簡體   English   中英

替換bash中文件名中的字符串

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM