- Get-ChildItemコマンドレットとは
- 基本的な使い方
- 再帰的な検索
- ファイルとディレクトリのフィルタリング
- ファイルのみ、ディレクトリのみの表示
- 隠しファイルやシステムファイルの表示
- 出力を変えてみる
- 応用編
- 終わりに
- 参考
Get-ChildItemコマンドレットとは
オンラインヘルプによれば、
指定した場所のディレクトリとファイルの一覧を取得します。
Get-ChildItem
コマンドレットは、ディレクトリの内容を取得するために使われます。
これは、ファイルやフォルダの一覧を表示するための基本的なコマンドレットで、
別名も登録されており ls や dir と入力しても同じように使えます。
構文は
Get-ChildItem
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-File]
[-Directory]
[<CommonParameters>]
となっています。
基本的な使い方
Get-ChildItem
の基本的な使い方はとても単純。
以下のコマンドは、現在のディレクトリの内容を一覧表示します。
Get-ChildItem
また特定のパスを指定して、そのディレクトリの内容を取得する場合は
Get-ChildItem -Path "C:\Windows"
上記の例では、C:\Windows
ディレクトリの内容を表示します。
再帰的な検索
ディレクトリ内のさらにサブディレクトリも含めて内容を表示したい場合、-Recurse
パラメータを使用します。
Get-ChildItem -Path "C:\Windows" -Recurse
こうすることで、C:\Windows
ディレクトリ内のすべてのファイルとサブディレクトリを再帰的に表示することができます。
ファイルとディレクトリのフィルタリング
Get-ChildItem
は、特定のファイルやディレクトリだけを表示するためのフィルタリング機能があります。
例えば-Filter
パラメータを使用することで特定の拡張子のファイルだけを表示することができます。
Get-ChildItem -Path "C:\Windows" -Filter "*.xlsm"
このコマンドは、C:\Windows
ディレクトリ内のすべてのxlsmファイル(マクロ有のExcel)を表示します。
また、-Include
および-Exclude
パラメータを使用することで、さらに細かいフィルタリングができます。
Get-ChildItem -Path "C:\Windows" -Include "*.xlsm", "*.txt" -Exclude "*.ps1"
このコマンドは、.xlsmおよび.txt
ファイルを含み、.ps1ファイルを除外します。
あんまり意味ないけど・・・。
ファイルのみ、ディレクトリのみの表示
フォルダだけ調べたい!ファイルだけ表示したい!そんなときは、-File
または-Directory
パラメータを使用します。
Get-ChildItem -Path "C:\Windows" -File
このコマンドは、C:\Windows
ディレクトリ内のファイルのみが表示されます。
Get-ChildItem -Path "C:\Windows" -Directory
このコマンドは、C:\Windows
ディレクトリ内のディレクトリのみを一覧表示します。
隠しファイルやシステムファイルの表示
隠しファイルやシステムファイルを含めて表示する場合、-Force
パラメータを使用します。
Get-ChildItem -Path "C:\Windows" -Force
でも権限がないフォルダやファイルはエラーになるからお気を付けて。
出力を変えてみる
Get-ChildItemの出力をもっと柔軟に変更したい!
そんなときはSelect-Objectコマンドレットを併用することができます。
例えば、ファイルの名前とサイズのみを表示するには次のようにします。
Get-ChildItem -Path "C:\Windows" | Select-Object Name, Length
このコマンドは、C:\Windows
ディレクトリ内の各ファイルの名前とサイズを表示します。
いやどんなプロパティがあるかわからんよ!そんなきときは事前にGet-Memberで調べてね。
Get-ChildIte|Get-Member
応用編
より応用的な利用法としてGet-ChildItemの結果をパイプラインで他のコマンドレットと組み合わせて使うことができます。
例えば特定の条件に一致するファイルを検索し、その内容を表示する場合は次のようにします。
Get-ChildItem -Path "C:\" -Recurse -Filter "*.xlsx" | Where-Object { $_.Length -gt 1MB }
この、Cドライブ内の1MBを超えるすべての.xlsxファイルの一覧を表示します。
終わりに
Get-ChildItemコマンドレットは、PowerShellのシステム管理だけではなく日常のちょっとしたPC操作で使える超便利なコマンドレットです。
最近はもっぱらこればっかり使ってますね(大体本当)。
基本的なファイル一覧表示から、再帰的な検索やフィルタリング、パイプラインを使った応用まで色々と使えます。
ぜひこれらを活用してPowerShellファイル操作ライフを効率化してみてください。
というわけでここまでお読み頂きましてありがとうございました。