![Linux シェルを使用して「"」文字を削除してファイル名を変更する方法](https://rvso.com/image/1421903/Linux%20%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%8C%22%E3%80%8D%E6%96%87%E5%AD%97%E3%82%92%E5%89%8A%E9%99%A4%E3%81%97%E3%81%A6%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
次のようにファイル名に二重引用符が含まれるファイルがいくつかあります。
「これは引用符付きの長いファイル名です」.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