ファイル名のドットを置き換えてアンダースコアに置き換えようとするbashスクリプトがありますが、拡張子はそのままにしておきます(私はCentos 6を使用しています)。以下の出力からわかるように、置換するドットがある場合でもスクリプトは機能しますが、ドットのみが拡張子である場合、スクリプトはファイルを無視するのではなく、ファイルの名前を変更しようとします。誰かがこれをよりよく処理する方法を指摘できますか?助けてくれてありがとう。
私の(欠陥のある)スクリプト:
#!/bin/bash
for THISFILE in *
do
filename=${THISFILE%\.*}
extension=${THISFILE##*\.}
newname=${filename//./_}
echo "mv $THISFILE ${newname}.${extension}"
#mv $THISFILE ${newname}.${extension}
done
入力例:
1.3MN-Pin-Eurotunnel-Stw505.51.024-EGS-130x130.jpg
Wear-Plates.jpg
出力:
mv 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg
mv Wear-Plates_jpg.Wear-Plates_jpg Wear-Plates_jpg.Wear-Plates_jpg
tar.gz
ファイルなどのトリッキーなケースはどうですか?解決しfile.tar.gz
ないでくださいfile_tar.gz
。