Menu

inplace(1)を作った

 perlやrubyやFreeBSDのsedには-iがあるが、こんなのを各コマンドに用意するのはあほらしいので、inplace(1)を作った。こんな風に使う。

# ファイルをソート
$ inplace -e sort file1 file2 file3

# 文字コードをUTF-8に変換
$ inplace -e 'nkf -w' *.txt

# タイムスタンプを変えずにMP3タグを修正
$ inplace -te 'cp %1$s %2$s && mp3info -y 1999 -g "Progressive Rock" %2$s' *.mp3

# タイムスタンプを変えずに画像加工, バックアップは残す
$ inplace -b.orig -te 'convert -rotate 270 -resize 50%% %s %s' *.jpg

 特長:

  • 任意のフィルターコマンドラインを指定できる
  • コマンドでエラーが起きた場合に置換をキャンセルしてくれる
  • 出力結果が空だった場合に置換をキャンセルしてくれる(-zで制御可能)
  • バックアップファイルも残せる(-b suffix)
  • ファイルのモードやオーナーシップはもちろん、タイムスタンプも維持できる(-t)
  • シンボリックリンクを辿り、元ファイルを置換することもできる(-L)

 あ、これは今日書き始めて一発撮りしたまんまだから、テストは不十分です。言うまでもないが注意して使ってください。感想や報告や要望を歓迎します。

(追記: この稿の後、仕様が変わっています。新しい情報をチェックしてください。)

コメントを残す

メールアドレスが公開されることはありません。