nFact

n!

WindowsでLinuxのfindのような検索を行う

WindowsLinuxのfindコマンドと同等のものをやりたいとき、結構困りますよね。

うっかりWindowsのFINDを使ってしまうと

FIND: パラメータの書式が違います

とか言われてしまう…これがあのいつものdirコマンドでなんとかできます。

dir コマンドを使ったfindのような検索

dirコマンドの再帰的にファイルを表示するオプションを使う方法です。

dir /s /b *検索文字列*

例えば「カレントディレクトリ以下のJavaファイルを検索したい場合」は

dir /s /b *.java*

となります。

find . -name "*.java"

に近い結果が表示されます。

dirに指定しているオプションの/s/bの意味は次のとおりです。

  /B          ファイル名のみを表示します (見出しや要約が付きません)。
  /S          指定されたディレクトリおよびそのサブディレクトリのすべての
              ファイルを表示します。

他に設定できるオプションの詳細は次のコマンドでわかります。

dir /?

コマンドの返り値( %ERRORLEVEL% )によって、ファイルが見つかったかどうかがわかります。
0が返ると検索成功、1が返ると検索失敗(ファイルが見つからなかった場合など)です。

... > dir /s /b *.java*
(ここに結果が表示される)

... > echo %ERRORLEVEL%
0

... > dir /s /b *.javaaaaaaa*
ファイルが見つかりません

... > echo %ERRORLEVEL%
1

これを覚えればFINDで怒られることもなさそうです。