過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2011/10/06
【コマンドライン】for …( * ) と dir /s /b の小ネタ

 
ほとんどの人にとってどうでも良いネタ紹介。
 
Windows コマンドラインから、現ディレクトリ以下のファイルを列挙するには
標準コマンドを利用する方法で2通りあります。
 
1つ目は dir コマンドを利用して、linux で言う find . -name '*.java'
再現する場合、
 
dir /s /b *.java
 
とすることで再現ができます。
2つ目は for 構文を利用して検索が出来ます。
 
for /r %i in ( *.java ) do echo %i
 
どちらの方法も、パイプを通して xargs などで渡すことによりファイル検索を
行うことが出来ますね。
 
でこの2つのコマンド どっちが高速か という紹介。
 
 
実はこのコマンド、一目の dir /s /b の方が2倍近く早いんです。
理由は for だと echo off をしない場合出力が2倍になるのもありますが、
echo off をしたとしても…
 
・for コマンドは変数展開を行える為、解析処理にオーバヘッドがある。
echo コマンドを通すため、echo を呼び出すためのオーバヘッドがある。
 
という点もあり、大分遅くなります。
 
ファイルを探索するだけなら dir /s /b の方が実用的と言えるかもしれません。

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。