※記事内に商品プロモーションを含むことがあります。
はじめに
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