ファイル名からGUIDを削除するBashシェルスクリプト

ファイル名からGUIDを削除するBashシェルスクリプト

一部のファイル名にハイフンのないGUIDを変更しようとしています。

正規表現を完了したようですが、エスケープまたは代替コマンドがお互いに正しく動作しないようです。

これは私の正規表現です。

https://regex101.com/r/SiqsjP/1

(-[0-9a-f]{32})

ファイル名は次のとおりです。

iPhone6Plus-learn_multi_child-0dfb2dc71fe20da66ca47190d3136b12.png

私はこの答えを見ました。ファイル名から部分文字列を見つけて削除する Bash シェルスクリプトしかし、同じではありません...

私はこれがうまくいくべきだと思いますが、エラーについて文句を言わないでしょうか?

newname=`echo "$filename" | sed -e 's/\([0-9a-f]{32}\)\.png/\1.png/'`

ベストアンサー1

存在するsed 着替える(基本正規表現)中括弧もエスケープする必要があります{}

newname=`echo "$filename" | sed 's/-[0-9a-f]\{32\}//g'`

ファイルの移動/名前を変更する:

mv "$filename" "$newname"

おすすめ記事