はじめに #
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
の値から確認できる。
PS > $PSVersionTable
PowerShellの起動 #
エクスプローラ上でShiftキーを押しながら、アプリケーションキーを押すと(またはマウスの右クリック)、「PowerShell ウィンドウをここで開く(S)」が表示される。 これを選択すると、エクスプローラで開いているフォルダをカレントディレクトリとして、PowerShellが起動する。
Get-ChildItemコマンドレットの基本 #
Get-ChildItemコマンドレットをオプションを付けずに実行すると、カレントディレクトリにあるフォルダ・ファイルの一覧が表示される。
例:
PS > Get-ChildItem
ディレクトリ: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020/07/18 10:07 Subdir1
d----- 2020/07/18 10:07 Subdir2
-a---- 2020/07/18 10:07 11 aaa.txt
-a---- 2020/07/18 10:07 8 bbb.txt
-a---- 2020/07/18 10:08 30 ccc.txt
ここで、Lengthはファイルサイズを表し、単位はバイトである。
Get-ChildItemコマンドレットの主なオプションは以下の通り。
オプション | 短縮形 | 説明 |
---|---|---|
-Recurse | -r | サブフォルダの結果も表示 |
-Depth | -d | -Recurseを適用する階層の深さを指定 |
-Name | -n | ファイル名・フォルダ名のみ表示 |
-File | 無 | ファイルのみ結果を表示 |
-Filter | 無 | ファイル名・フォルダ名を絞り込み |
以下では、各オプションについて解説する。
-Recurseオプションでサブフォルダも表示 #
Get-ChildItemコマンドレットに-Recurse
オプションを付けて実行すると、全てのサブフォルダにあるフォルダ・ファイルの一覧が表示される。
PS > Get-ChildItem -Recurse
探索するサブフォルダの階層数を制限する場合は、-Depth
オプションを追加する。
-Depth
の後に0以上の整数を付けると、その数だけ下の階層を表示する。
-Depth 0
のときにはカレントフォルダの結果しか表示しない。
例:3階層下までの結果を表示する
PS > Get-ChildItem -Recurse -Depth 3
-Nameオプションでフォルダ名・ファイル名のみ表示 #
Get-ChildItemコマンドレットに-Name
オプションを付けて実行すると、フォルダ・ファイルの名前のみ表示される。
例:
PS C:\Test> Get-ChildItem -Name
Subdir1
Subdir2
aaa.txt
bbb.txt
ccc.txt
-Fileオプションでファイルのみ表示 #
Get-ChildItemコマンドレットに-File
オプションを付けて実行すると、結果からフォルダが除外され、ファイルのみ表示される。
例:
PS C:\Test> Get-ChildItem -File
ディレクトリ: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/07/18 10:07 11 aaa.txt
-a---- 2020/07/18 10:07 8 bbb.txt
-a---- 2020/07/18 10:08 30 ccc.txt
-Filterオプションでファイル名を絞り込み #
Get-ChildItemコマンドレットに-Filter
オプションを付けて実行すると、フォルダ名・ファイル名を絞り込んだ結果が表示される。
-Filter
の後に文字列を追加すると、その文字列に一致したファイル名のみ表示される。文字列にはワイルドカード*
を使用できる。
例:拡張子がtxt
のファイルのみ表示する
PS C:\Test> Get-ChildItem -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