PowerShellのget-childitemでフォルダ内のファイルを高速で再帰検索する方法

概要

今回はwindowsでフォルダ内を再帰的にファイル探査する方法を紹介していきます。

フォルダの直下ならばすぐに調べられますが、階層が深いフォルダだと一つ一つ見ていくのは日が暮れますよね(- -:

今回紹介するコマンドを使用すれば、特定の文字列を含むファイル名を一発で探査することができます!

パソコンが苦手な方でもわかるように図解で紹介していきます。
それではやっていきましょう

目次

やり方

powershellを開く

今回はコマンドラインで検索するので、powershellを開きます。

powershellを開く
powershellを開く
コマンドプロンプトでは無く、powershellですよ!

検索したいフォルダをpowershellで開く

cdコマンドを使用し、powershellでフォルダを開きます。

コマンド

1
cd [フォルダパス]

1
cd C:\Users\xxx\Desktop\work

ちなみにフォルダパスは、エクスプローラを開いて、画像の丸で囲っている部分の余白をクリックすると表示されます。

エクスプローラでフォルダパスを取得する
powershellを開く

検索を実施する

フォルダ内を検索するためにget-childitemコマンドを実行します。

コマンド

1
Get-ChildItem . -Recurse -Filter "[検索したい文字]" -Force

1
Get-ChildItem . -Recurse -Filter "*.txt" -Force

上記の例だと正規表現を使用し、末尾に「.txt」が含まれるファイルを検索します。
実際に叩くと下記のように表示されます。

powershell 高速で再帰的にファイルを検索する
powershell ファイルを再帰的に検索する

ちゃんと再帰的に検索して、結果表示ができてますね!

上級者(さらなる高速化)

プログラマならわかると思いますが、「.git」や「node_module」フォルダといった探査不要なフォルダも結構あると思います。
不要なフォルダがわかっている場合、検索範囲から取り除くことでさらなる高速化が望めます!

下記は不要なフォルダを検索から除外する方法となります。

コマンド

1
Get-ChildItem . -Recurse -Filter "*.txt" -Force | Where-Object { $_.FullName -notmatch "[除外フォルダ1]|[除外フォルダ2] "}

1
Get-ChildItem . -Recurse -Filter "*.txt" -Force | Where-Object { $_.FullName -notmatch ".git|test" }

上記の例だと「.git」と「test」フォルダ を除外して検索してます。

powershell 高速で再帰的にファイルを検索する フォルダ除外
powershell 高速で再帰的にファイルを検索する フォルダ除外

これで無駄な検索をしなくなるので、かなりの高速化が見込めます!

締め

あのファイルどこだっけ?ってかなりの頻度で発生しますし、簡単に早く検索できるのはとても良いですよね!

一応GUI(エクスプローラ)でも再帰検索できますが、めちゃくちゃ遅いので、高速で検索できるこちらを使用したほうが良いと思います!

この手順を使えば1つずつフォルダを見るという工数の無駄を大幅に減らせます。
定時で帰るために効率化はガンガンやっていきましょう!

以上となります。
効率化の鬼といわれるくらいがちょうどいいですよね
それではお疲れさまでした!