golangでリネームツール作ってみました

クロスプラットフォームで使えるリネームツールが欲しくて作ってみました。

概要

あらかじめ設定ファイルに記述しておいたリネームコマンドをファイルに適用させることができます。

例えば、

{
  "ltrim": {
    "action": "regexp_replace",
    "args": ["^\\s+", "", "true"]
  },

  "rtrim": {
    "action": "regexp_replace",
    "args": ["\\s+$", "", "true"]
  },

  "trim": {
    "action": "order",
    "args": ["ltrim", "rtrim"]
  }
}

このようにJSON形式で設定ファイルを書いておくと、

$ ysrenamer rtrim "foo/bar .hoge"
foo/bar .hoge -> foo/bar.hoge

$ ysrenamer trim "foo/   bar .hoge"
foo/   bar .hoge -> foo/bar.hoge

こんな感じでコマンドに従ってファイルリネームを実行します。


golangでプログラム書き始めて2日目だけど、とりあえず動くものが作れました。 やはりコンパイラ言語の中ではかなり書きやすいと思います。

ディレクトリ構造はpecoを参考にさせてもらいました。 go getの挙動とかよく分かってないので不安でしたけれど、試してみたところ正常にインストールされるようになってました。

当面は有名どころのgolangOSSを読んで学習しながら、機能拡張してければなと思ってます。