手元に rar なアーカイブが大量にあったりしたのだが、その中身を一気にリストアップしたい要望があって、ちょっと調べてみた。ぱっと思いついたのは、Linux でそのフォルダをマウントして、全ファイルに対して unrar l リストアップする、というもの。Windows だけでできる方法もあるのかな。
Cygwin でも頑張ればできるようなので、マウントする必要がない(/cygdraive/C/ とか)し、それもいいのだが、ここは先日セットアップした VMware Player 上の Ubuntu で。unrar も apt-get できるから、ラクラク。小生 Shell で for を回すより、awk で Shell Script を生成する方が好きなんでそれで対応(というか Bash の使い方をすぐ忘れてしまう.. do ; done だっけ?)。どうでもいい話...
今回個々のファイルではなくアーカイブ内のフォルダ名だけ欲しかったので、".D...." とかいう文字列を grep したり(ピリオドはちゃんとエスケープしないといけない、って蛇足)。
ls -1 | awk '{printf("unrar l \047%s\047\n",$0)}' | sh | grep '\.D\.\.\.\.' > /tmp/rarlist.txt
ちなみに Cygwin の unrar は、ここ(Bernie's blog さんのページ)を参考にしたら一応できた。g++-3 が必要と書かれているが、今日現在だと、普通の g++ を入れれば、g++-3 っぽい。gcc4 を入れれば 4 になるのかな。バージョン問題っていうのはどの OS でも逃れられない定めなんだなぁ。
さて、出てきたリストはそこそこいじらないと要望には使えなさそう。なかなか大変。