stk_check_time.rb: 任意ディレトリ下の新簑形式のタイムスタンプの重複をチェック

無保証。
GNU grepとRuby(スクリプト言語)が必要です。

任意のディレクトリ下の全ファイルを検索して、新簑形式のタイムスタンプの重複をチェックするスクリプトです。ただしチェックが甘めの為、目安にしかなりません。

使用例:
ruby stk_check_time.rb

インストール:
スクリプト一行目のruby実行ファイルへのパスは、お使いの環境に合わせて適切に書きかえて下さい。

------------------------------------------------------------

GNU grepとRubyが必要です。

GNU grepについては、ディレクトリを再帰的に検索させるオプション"-r"を使えるものが必要です。具体的にバージョンいくつ以上が必要かは分かりません。

目安ですが。

私はデスクトップ上(Windows98SE)では、GNU grep 2.5.1のWindows用を使っていますが、これだと"-r"が使えます。

またZaurus SL-C760に標準搭載のものはGNU grep 2.2ですが、これだと"-r"は使えません。

------------------------------------------------------------

コマンドラインで、チェックしたいディレクトリをカレントディレクトリにして、例えば、"ruby stk_check_time.rb[Enter]"として下さい。特別な引数は必要ありません(といいますか引数をとれません)。結果は標準出力から出てきます。

何か色々と表示されたら、タイムスタンプが重複している「かも」しれません。何も表示されないから重複していないのかといわれると自信ありません。全体的に目安とお考え下さい。

------------------------------------------------------------

エディターによってはバックアップファイルを作ります。このバックアップファイルも検索してしまうと、おそろしいほど大量に重複としてリストアップされる事があります。そこでバックアップファイルを検索対象から外す必要があります。ところがこのバックアップファイルの命名ルールは様々ですので、これはユーザーが指定してやる必要があります(正規表現で)。エディターでスクリプトのソースを開いて、31行目あたりを手書きで書きかえて下さい。

とりあえず各種エディターに向けたサンプルを知っている範囲で書いてあります。
#でもほとんどテストしていません。

EmEditorについてですが。EmEditorはバックアップファイルを色々な場所に作る事ができるようです。例えば、マスターファイルのあるディレクトリの下にサブディレクトリを掘り、これをバックアップフォルダとして、その中へ作る事もできるようです。ところが残念ながら、どれがバックアップフォルダなのか見分ける方法を知りません。そこで、サブディレクトリを再帰的に検索させない、つまりカレントディレトリのみの検索、という事もできるようにしました。その場合は、エディターでスクリプトのソースを開いて、34行目あたりを手書きで"true"→"nil"と書き換えて下さい。

------------------------------------------------------------

既知の不具合:

1.タイムスタンプっぽい文字列を見つけたらチェック対象にしますので、関係ない文字列もチェックで引っかかる可能性があります。

3.ファイルもディレクトリも一つもないディレクトリ内で実行すると、
  grep: *: No such file or directory
  と表示されます。これはGNU grepが吐き出すエラーメッセージです。

2004/04/17(06:50:09)