ファイル名を一括変換するコマンド一覧


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 *;...

これならドットファイル以外の全てのファイル名を取り出せます。