複数ファイルを一括リネーム

標準出力から文字列を受け取って別のコマンドで使えるととても便利
例えば、複数のファイル名を一気に同じ形式に変更したいとする

カレントディレクトリに以下のファイルがあるとする
hoge1
hoge2
hoge3

これをそれぞれ.txtという拡張子を付けた形にリネームしたいとき以下のようにできる

$ find . -name 'hoge*' | xargs -n1 -I% mv % %.txt
  • n1で渡された値を一つずつ次のコマンドに渡すよう指定
  • I%とすることで渡された値を%として次のコマンドの引数の中で使えるようになる