Linux シェルを使用して「"」文字を削除してファイル名を変更する方法

Linux シェルを使用して「"」文字を削除してファイル名を変更する方法

次のようにファイル名に二重引用符が含まれるファイルがいくつかあります。

「これは引用符付きの長いファイル名です」.mp3

Linuxコマンドrenameを使ってみます。アンダースコアは簡単に消すことができます。

rename 's/_//g' *

しかし、\" を試しても何も起こりません (変更を確認するには -n を使用します)。

rename -n 's/\"//g' *

名前は変更されていません

ありがとう!

答え1

ファイル名に「スマート引用符」が含まれています:

“Tokyo_String_Quartet-Beethoven_-Late_String_Quartets-CD1-11-Quartet”.mp3 

rename代わりにこれらを挿入したコマンドを試してください"

または、使用せずにオプションrenameを実行することもできますsed

for f in *.mp3
    do
        new=$(echo $f | sed -E 's/[“”]//g')
        mv $f $new
    done

すべてのバッチ シェル操作と同様に、mv元のフォルダーのバックアップでテスト/実行するのがもっとも安全です...初めて試すときは、echoの代わりに を入れてテストできます。mv

答え2

一重引用符内の二重引用符をエスケープする必要はありません。

rename -n 's/"//g' *

答え3

私はこれをBashで実行できました:

file=$(ls | grep \")
newName=$(echo $file | sed 's/\"//g')
mv $file $newName

関連情報