※記事内に商品プロモーションを含むことがあります。
はじめに
PowerShellでサブフォルダを含むファイル名を一覧表示するには、Get-ChildItem -Recurse -Name -Fileを実行する。エイリアス(別名)を使用するとls -r -n -Fileと短縮できる。さらに、ファイル名で抽出する場合には-Filterオプションを追加する。
本記事では、上記のコマンドについて解説する。
動作を確認した環境は以下の通り。
- Windows 10 Home 1909および21H1
- PowerShell 5.1.18362.752および5.1.19041.1682
なお、PowerShellのバージョンは、以下のコマンドで表示されるPSVersionの値から確認できる。
|
|
PowerShellの起動
エクスプローラ上でShiftキーを押しながら、アプリケーションキーを押すと(またはマウスの右クリック)、「PowerShell ウィンドウをここで開く(S)」が表示される。
これを選択すると、エクスプローラで開いているフォルダをカレントディレクトリとして、PowerShellが起動する。
Get-ChildItemコマンドレットの基本
Get-ChildItemコマンドレットをオプションを付けずに実行すると、カレントディレクトリにあるフォルダ・ファイルの一覧が表示される。
例:
|
|
ここで、Lengthはファイルサイズを表し、単位はバイトである。
Get-ChildItemコマンドレットの主なオプションは以下の通り。
| オプション | 短縮形 | 説明 |
|---|---|---|
| -Recurse | -r | サブフォルダの結果も表示 |
| -Depth | -d | -Recurseを適用する階層の深さを指定 |
| -Name | -n | ファイル名・フォルダ名のみ表示 |
| -File | 無 | ファイルのみ結果を表示 |
| -Filter | 無 | ファイル名・フォルダ名を絞り込み |
以下では、各オプションについて解説する。
-Recurseオプションでサブフォルダも表示
Get-ChildItemコマンドレットに-Recurseオプションを付けて実行すると、全てのサブフォルダにあるフォルダ・ファイルの一覧が表示される。
|
|
探索するサブフォルダの階層数を制限する場合は、-Depthオプションを追加する。
-Depthの後に0以上の整数を付けると、その数だけ下の階層を表示する。
-Depth 0のときにはカレントフォルダの結果しか表示しない。
例:3階層下までの結果を表示する
|
|
-Nameオプションでフォルダ名・ファイル名のみ表示
Get-ChildItemコマンドレットに-Nameオプションを付けて実行すると、フォルダ・ファイルの名前のみ表示される。
例:
|
|
-Fileオプションでファイルのみ表示
Get-ChildItemコマンドレットに-Fileオプションを付けて実行すると、結果からフォルダが除外され、ファイルのみ表示される。
例:
|
|
-Filterオプションでファイル名を絞り込み
Get-ChildItemコマンドレットに-Filterオプションを付けて実行すると、フォルダ名・ファイル名を絞り込んだ結果が表示される。
-Filterの後に文字列を追加すると、その文字列に一致したファイル名のみ表示される。文字列にはワイルドカード*を使用できる。
例:拡張子がtxtのファイルのみ表示する
|
|
まとめ
上記のオプションを組み合わせ、Get-ChildItem -Recurse -Name -Fileを実行すると、サブフォルダを含むファイル名を一覧表示される。
ファイル名で抽出する場合には-Filterオプションを追加すれば良い。
参考
PowerShellのGet-ChildItemコマンドレットでファイル名の一覧を取得する(基本編):Tech TIPS - @IT
Get-ChildItemコマンドレットのその他のオプションについては、以下のリファレンスを参照。
Get-ChildItem (Microsoft.PowerShell.Management) - PowerShell | Microsoft Docs
Powershellでファイル名に連番を振ってリネームする – Helve Tech Blog
Powershellで複数のテキストファイルから文字列を検索 – Helve Tech Blog