適材適所

WindowsやPowerShellやネットワーク、IBMなどのシステム系の話など気になったことも載せているブログです。

【PowerShell】ディレクトリを自在に操作する?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ファイル操作ライフを効率化してみてください。

というわけでここまでお読み頂きましてありがとうございました。

参考