[Linux][bash] 任意の拡張子のファイル名を片っ端から小文字に変換する
こないだユニコーン見に行っちゃいました、nakamura です!おっさんサイコー!
さてさて、特に移行・リニューアル系の案件でありがちですが、PDF だったり画像だったりファイル名の大文字小文字のルールがぐちゃぐちゃ!ていうの直したい時に重宝すると思います。大文字を含むファイル名を一発で小文字に変換するシェルスクリプトを書きましたのでよろしければどうぞ~。
スクリプト
実際のスクリプトはだいたい以下のような感じです。
#!/bin/bash
# pdf, xls, doc, csv を検索
FILES=`find /home/projects/c-brains.jp/htdocs/ ! -path "*.svn*" -type f \
\( -iname "*.pdf" \
-o -iname "*.xls" \
-o -iname "*.doc" \
-o -iname "*.csv" \)`;
# 見つかったファイルリストでループ
for FILE in $FILES; do
# 大文字を小文字に置換
LOWER=`echo $FILE | tr A-Z a-z`;
# 置換前と後で違ったら mv コマンドでファイル名変更
if [ $FILE != $LOWER ]; then
mv $FILE $LOWER && echo "$FILE converted to lower case.";
fi;
done;
find で条件に合うファイルを検索、検索結果を元にループ、tr コマンドでファイル名変換、mv コマンドで移動、という流れです。特に難しい事をしている訳ではないので、状況にあわせて適宜作り変えてみてください。
終わりに
今日は短いですが以上です。ていうか知らない間に梅雨入りしてたのね・・・。