[cmd.exe]Windowsでファイル一覧を再帰的に、コマンドラインから取得する

カテゴリ: Windows

Linuxでは、findコマンドで特定フォルダ以下のファイル一覧を取得することができます。
今回は、Windowでの同様の処理を行う方法を説明します。

Windowsでコマンドラインからファイル一覧を取得する

Windowsのcmd.exeでは、dirコマンドのオプションを工夫することで、Linuxのfindと同等の事が行えます。

ファイルの一覧は、以下のコマンドで列挙できます。

# find ./ -print -type=f と同様の処理
dir /s /b /a-d .\

一方、こちらのコマンドではフォルダ名の一覧だけを取得できます。

# find ./ -print -type=d と同様
dir /s /b /ad .\

dirコマンドのオプション

dirコマンドで指定した /s, /b, /a-dの意味は下記のとおりです。
/sは再帰的に表示する意味で、/bはファイル名のみを出力、/a-dはディレクトリ以外(=ファイルのみ)を出力することを意味しています。

これらのオプションの意味を忘れた時は、dir /?コマンドでヘルプを確認できます。

dir /?
  ...
  /S          指定されたディレクトリおよびそのサブディレクトリのすべての
              ファイルを表示します。

  /B          ファイル名のみを表示します (見出しや要約が付きません)。

  /A          指定された属性のファイルを表示します。
  属性        D  ディレクトリ                R  読み取り専用
              H  隠しファイル                A  アーカイブ
              S  システム ファイル           I  非インデックス対象ファイル
               L  再解析ポイント             -  その属性以外

ファイルの数を確認する(wc -l)

Linuxの場合は、出力結果をパイプでwcコマンドに渡すことファイルの個数(出力行数)をカウントすることができます。

# linuxの場合のファイル件数出力
find ./ -print -type=f | wc -l

上と同等の処理を行う為には、Windowsのコマンドラインから下記のコマンドを入力すればよいです。

# windowsで find + wcと同様の処理
dir /s /b /a-d .\ | find /c /v ""

Linuxのwcに相当するWindowsコマンドが、"find"なので少し混乱してしまいますが、これでファイル数を確認できます。

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。