拡張子一覧を作る

サーバにはどんなファイルがある?

ファイルサーバにどんなファイルがどれだけ入ってるのか調べてくれ,と言われました.ちょっと考えたんですが,うまいやり方を思いつかなかったので地道に手作業で調べてみたのでその手順です.

準備

まずはファイルサーバをネットワークドライブとしてAdministrator権限で接続します.そのためには,

net use \\servername password /USER:Administrator@mydomain.foo.co.jp

として,サーバに管理者権限でログインしてからGUIでネットワークドライブ接続します.net useの使い方は"net use /?"で確認できますが大したことは書いてありません.次にネットワークドライブ毎にファイル名の一覧を作成します.

Z:\>dir /B /L /OE /S /-D > c:\Documents and Settings\daiba\デスクトップ\filenames.txt

これで準備できました.dirの使い方は"dir /?"で確認できます.何気なく使ってるコマンドでも色々とオプションがあってちょっとした驚きがありますね.ま,そんなことはおいといて,必要なのは解析です.普段はperlでさくっと調べるのですが,今回はluaでやってみました.

luaプログラム

始めてなのか久しぶりなのかわからないぐらい忘れていたので単純に書いてみました.行毎に正規表現で処理して,それをテーブルに挿入し内容を書き出しています.拡張子の数の多いものから出力するようなことも考えてみたんですが,面倒になったのでそれはexcelか何かでやることにしました.

io.input("filenames.txt")

suffix = {}

while true do
  line = io.read()
  if (line == nil) then
    break
  end

  for result in string.gmatch(line, "%.%w%w%w$") do
    suffix[result] = suffix[result] and (suffix[result] + 1) or 1
  end
end

for key,value in pairs(suffix) do
  out = string.format("%4s  %d",key,value)
  print(out)
end

終わりに

luaはなかなか癖がある言語だけど,使いこなせれば面白そうです.nmapにも組み込まれているので,色んなチェックツールを書けそうです.