for文を使う
正直これが一番わかりやすくて楽。
ファイル名を一括変換するコマンド
% for f in `ls`; do mv $f ${f/変えたい部分/変える部分}; done
ファイル名の一部を一括削除するコマンド
% for f in `ls` ; do mv "$f" "${f#消したい部分}" ; done
findを使う
これはややこしかった。
for文の方がおすすめ
●ファイル名の先頭にキーワードを付け加える
% find /作業するPATH -type f -print0 | awk -F/ '{print $NF}' | xargs -I% mv 作業するPATH/% 作業するPATH/付与したい単語%
●ファイル名の末尾にキーワードを付け加える
% find /作業するPATH -type f -print0 | xargs -0 -I% mv % %付与したい単語
●ファイル名の先頭にあるキーワードを削除する
% find /作業するPATH -type f -print0 -name "削除したい*" | perl -pe 's/削除したい単語//g' | xargs -0 -I% mv 削除したい単語% %
●ファイル名の末尾にあるキーワードを削除する
% find /作業するPATH -type f -print0 -name "*削除したい単語" | perl -pe 's/削除したい単語//g'
renameという便利なやつがあるらしいけどMacOSXでは使えなかったので割愛
スペースが含まれるファイル名の場合
(追記)
% for f in `ls`;...
この書き方では、スペース(環境変数$IFS)が含まれるファイル名を正しく取り扱えないらしい。
なので、globを使って下のように書きます。
% for f in *;...
これならドットファイル以外の全てのファイル名を取り出せます。