簡體   English   中英

Bash重命名文件腳本不起作用

[英]Bash Rename Files Script Not Working

我有以下腳本,由於某種原因,它無法正常工作

find . -name '*---*' | while read fname3 

do
    new_fname3=`echo $fname3 | tr "---" "-"`

    if [ -e $new_fname3 ]
    then
            echo "File $new_fname3 already exists. Not replacing $fname3"
    else
            echo "Creating new file $new_fname3 to replace $fname3"
            mv "$fname3" $new_fname3
    fi

done

但是,如果我使用

find . -name '*---*' | while read fname3 

do
    new_fname3=`echo $fname3 | tr "-" "_"`

    if [ -e $new_fname3 ]
    then
            echo "File $new_fname3 already exists. Not replacing $fname3"
    else
            echo "Creating new file $new_fname3 to replace $fname3"
            mv "$fname3" $new_fname3
    fi

done

該腳本可以工作,但是我最終得到3個下划線“ _ ”,如何用一個破折號代替3個破折號“ ---”?

謝謝,

看看man tr tr只會替換單個字符。

使用類似perl -wpe "s/---/-/"

也看看man 1p rename 它幾乎可以完全滿足您的要求:

rename 's/---/-/' *---*

我相信您需要更改tr以進行sed替代:

tr '---' '-'應該更改為sed -e 's/---/-/g

作為區別的一個例子:

$ echo "a---b" | tr '---' '-'
tr: unrecognised option '---'
try `tr --help' for more information

$ echo "a---b" | sed -e 's/---/-/g'
a-b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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