![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfVYYvEjVqHjrMPgOEKgtn7UqOdqa9m7kCxSV9gsUNkbw-qnmUIkszf2eI2lU9FLLiI-tlbfWez25OdyRmd1t77hoUDAoB07vAA8xw1ebhORCLhNv6ZbqRHhGYfi828XXbrha8EmASYuCk9bE0HAkdveAvLUICNkE4oSiz3kU4jE2X-VGVT1f-Wl6g/s1600-rw/binary-code-507786_1280.jpg)
大量のファイル名を変更する作業って、ほんとにローテクだけど、どうしてもやらなきゃいかん時は
フリーソフトを探して・・・
なんてことをせずに、コマンドラインで対応しよう。
今回は仕事でmacを使ってやったので、linuxでも問題なくできると思うので、lamp環境のサーバーでも応用できると思う。
windowsは申し訳ないけど、各自で試してコメントにて教えてください。
方法
1、ターミナルで対象フォルダにcdする。
2、findして大量ファイル一覧を取得
3、perl使って、文字列置換処理
4、xargsとmvを連動して、ファイル名変更
注意点
今回は簡単にファイル文字中の特定文字を一括で別文字に変換する事とするので、連番をふるとか、変換アルゴリズムがある場合は、また別の機会に・・・
あと、返還後が実在するファイル名とカブらないように注意しよう。
変換アルゴリズム
a-01-01.js -> r-01-01.js
上記のように「a-**-**.js」を「r-**-**.js」に変換するが、ファイル数が1000ファイルぐらいあったので、コマンドで楽してしまった。
$ find * -maxdepth 0 -name "*.js" -print0 | perl -pe 's/a\-//g' | xargs -0 -I% mv a-% r-%
これでサクッとできてしまった。
なかなかイイネ!!!
0 件のコメント:
コメントを投稿