PowerShell get-childitemでファイルを再帰検索する方法(-Path/-Recurse/-Filter)
概要
今回はwindowsでフォルダ内を再帰的にファイル探査する方法を紹介していきます。
フォルダの直下ならばすぐに調べられますが、階層が深いフォルダだと一つ一つ見ていくのは日が暮れますよね(- -:
今回紹介するコマンドを使用すれば、特定の文字列を含むファイル名を一発で探査することができます!
パソコンが苦手な方でもわかるように図解で紹介していきます。
それではやっていきましょう
目次
やり方
powershellを開く
今回はコマンドラインで検索するので、powershellを開きます。
検索したいフォルダをpowershellで開く
cdコマンドを使用し、powershellでフォルダを開きます。
コマンド
1 | cd [フォルダパス] |
例
1 | cd C:\Users\xxx\Desktop\work |
ちなみにフォルダパスは、エクスプローラを開いて、画像の丸で囲っている部分の余白をクリックすると表示されます。
get-childitemで再帰検索する(-Recurse / -Filter)
フォルダ内を検索するためにget-childitemコマンドを実行します。
コマンド
1 | Get-ChildItem . -Recurse -Filter "[検索したい文字]" -Force |
例
1 | Get-ChildItem . -Recurse -Filter "*.txt" -Force |
上記の例だとワイルドカードを使用し、末尾が「.txt」のファイルを検索します。
実際に叩くと下記のように表示されます。
ちゃんと再帰的に検索して、結果表示ができてますね!
-Pathで検索フォルダを指定する
上の例では現在のフォルダ(.)を対象にしていますが、移動せずに-Pathで検索したいフォルダを直接指定することもできます。
例
1 | Get-ChildItem -Path "C:\Users\xxx\Desktop\work" -Recurse -Filter "*.txt" -Force |
cdでフォルダを移動する手間が省けるので、決まったフォルダを何度も検索するときに便利です。
上級者(さらなる高速化)
プログラマならわかると思いますが、「.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」フォルダ を除外して検索してます。
これで無駄な検索をしなくなるので、かなりの高速化が見込めます!
締め
あのファイルどこだっけ?ってかなりの頻度で発生しますし、簡単に早く検索できるのはとても良いですよね!
一応GUI(エクスプローラ)でも再帰検索できますが、めちゃくちゃ遅いので、高速で検索できるこちらを使用したほうが良いと思います!
この手順を使えば1つずつフォルダを見るという工数の無駄を大幅に減らせます。
定時で帰るために効率化はガンガンやっていきましょう!
以上となります。
効率化の鬼といわれるくらいがちょうどいいですよね
それではお疲れさまでした!





