- ベストアンサー
複数のファイル名の一部を変換したい
あるディレクトリにある複数のファイルの一部の文字を別の文字に置き換えたいのですが、 どのようなコマンドで実現できますか? 変換前 *AAA* absdAAAfdsad.dat fdAAAsfds.txt fdffdAAAs.sh ffdfAAAdsAfds.xx 変換後 *BBB* absdBBBfdsad.dat fdBBBsfds.txt fdffdBBBs.sh ffdfBBBdsAfds.xx 変換したいファイル名は上記のようにファイル名の長さが違いますが、 各ファイル名の一部に共通の文字列が用いられています。 ファイルが100個ぐらいあるので手作業では大変なので、 これをコマンド一発で変換したいのです。 環境はcygwinでやっています。 もしwindowsのエクスプローラやDOSコマンドで実現可能ならそちらでも教えていただけると助かります。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
DOS コマンドなら、 cmd /v:on for /f "tokens=*" %A in ('dir /b') do @(set f=%A& ren "!f!" "!f:AAA=BBB!") で行けると思います。ただし、DOS では大文字小文字を区別しないので、aaAAAaa.txt のようなファイル名があると期待通りの結果にならないので、注意が必要です。 bash なら for file in *; do mv $file ${file/AAA/BBB}; done ですね。こちらは大文字小文字を区別します。
その他の回答 (2)
違うかもしれませんが、フリーソフトとならしってます。 ファイル名変換のリネームソフトです http://www.forest.impress.co.jp/lib/sys/file/filesearch/allrename.html
- THX1138
- ベストアンサー率51% (108/208)
cygwin はよく知りませんが Unix 系ということであれば、こんなやり方とか ls *AAA* | awk '{print "mv " $0 " " gensub(/AAA/,"BBB","g")'}' | csh なお、ls に alias で -F オプションをつけてたりする場合ははずしてください。 (実行可能ファイルが「foo*」と出てしまったりするから) まあ、Windows であればリネームソフト使う方がお手軽かもしれませんが。私はこれ使ってます。 Flexible Renamer http://www.vector.co.jp/soft/win95/util/se131133.html