[PowerShell] | |||||||||||
PowerShellのGet-ChildItemコマンドレットでファイル名の一覧を取得する(基本編)
|
|||||||||||
|
解説 |
使用していない古いファイルを整理するなどの目的で、特定フォルダ配下のファイルを一覧としてテキスト・ファイルなどに落とし込みたいというケースはよくある。しかし、Windows標準のエクスプローラでは、ファイルを検索するまではできても、これを外部で利用できるような形式で出力する機能は持っていない。
このような場合には、PowerShellのGet-ChildItemコマンドレットを利用するとよい。Get-ChildItemコマンドレットを利用することで、その結果をテキスト・ファイルにも簡単に出力することができる。
もっとも、これだけならばコマンド・プロンプト上でdirコマンドを使ってもよいと思われるかもしれない。しかし、dirコマンドとGet-ChildItemコマンドレットとが決定的に異なる点は、ファイル・サイズや作成/更新日時などの条件を指定して、検索の対象となるフォルダ/ファイルを絞り込むことができるという点にある。dirコマンドでは実現できなかった柔軟な検索も、Get-ChildItemコマンドレットを利用することで容易に実現できる(検索条件の指定方法については、次週、別TIPSで紹介する予定である)。
それではさっそく、具体的なGet-ChildItemコマンドレットの使い方を見ていくことにしよう。
操作方法 |
Get-ChildItemコマンドレットの基本
まずは、Get-ChildItemコマンドレットの最も基本的な使い方から見ておこう。パラメータも何も指定せずに、ただ単にGet-ChildItemコマンドレットを実行してみよう(*)。
* Get-ChildItemコマンドレットのエイリアス(別名)として「dir」や「ls」を使用してもよい。 |
PS > Get-ChildItem ……パラメータなしで実行する |
この場合、カレント・フォルダ配下に含まれるフォルダ/ファイルの内容が一覧表示される(ここでは「C:\Documents and Settings\Yamada」フォルダ配下の内容)。(カレント・フォルダではなく)特定のフォルダに含まれるフォルダ/ファイルの一覧を取得したければ、パラメータとして対象のパスを指定すればよい。
PS > Get-ChildItem C:\Windows ……フォルダを指定して実行する |
すべてのフォルダ/ファイルではなく、特定のフォルダ/ファイル名で絞り込むには、-includeや-excludeオプションを使用する。-includeオプションは取得結果に含めるパスを、-excludeオプションは取得結果から除外するパスを、それぞれ指定する。例えば、以下は「C:\Windows」フォルダの配下から「KB」で始まるファイルを除く、すべての「.log」「.dat」ファイルを取得する例だ(パス末尾の「*.*」は「Windows」フォルダに含まれるすべてのファイルを対象とすることを表す)。
PS > Get-ChildItem C:\Windows\*.* -include *.log,*.dat -exclude KB* ……名前を限定して実行する |
複数のパスを区切るには「*.log,*.dat」のようにカンマを使用すればよい。これによって、拡張子が「.log」「.dat」であるもので、かつ、ファイル名が「KB*」で始まらないファイルだけを抽出することができる。
また、ファイルの属性情報や最終更新日、サイズなどの付随情報が不要で、フォルダ/ファイル名だけを確認したいという場合には、-Nameオプションを使用すればよい。以下は、先ほどの条件はそのままに、合致するファイル名の一覧をファイルに出力する例である。
PS > Get-ChildItem C:\Windows\*.* -include *.log,*.dat -exclude KB* -Name > c:\result.txt |
この結果、result.txtに以下のような結果が出力されていれば成功である(ファイルの内容はtypeやmoreコマンドで確認できる)。
0.LOG |
サブフォルダまで再帰的に検索を行う
Get-ChildItemコマンドレットは、デフォルトでは指定されたフォルダ(またはカレント・フォルダ)配下のサブフォルダ/ファイル名だけを返すが、-Recurseオプションを付けると、サブフォルダ配下の内容を再帰的に取得できる。
以下は「C:\Windows」フォルダの配下の内容をサブフォルダの内容も含めてまとめて取得する例である。
PS > Get-ChildItem C:\Windows -Recurse ……サブフォルダの内容も表示する |
また、先ほど登場した-Nameオプションと併せて使用した場合には、(単なるフォルダ/ファイル名だけではなく)検索先フォルダからの相対パスとして結果が表示されることになる。
PS > Get-ChildItem C:\Windows -Recurse -Name ……サブフォルダも含めて、名前だけを表示させる |
この記事と関連性の高い別の記事
- PowerShellでファイルやフォルダを操作する(TIPS)
- PowerShellのGet-ChildItemコマンドレットでファイル名の一覧を取得する(応用編)(TIPS)
- PowerShellでパス文字列を操作する(TIPS)
- dirコマンドでファイル名の一覧を取得する(TIPS)
- PowerShellを使って指定したファイルをインターネットからダウンロードする(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
@IT Special
- PR -TechTargetジャパン
- ChromebookでVPNを設定する (2015/4/3)
外出先からインターネットを使って社内ネットワークにアクセスする際などに利用されるインターネットVPN。ChromebookでVPNを設定する方法を紹介する - WindowsでDropboxの同期フォルダーを変更する (2015/4/2)
WindowsでDropboxを使っていると、ドライブ容量の不足などによって同期フォルダーの場所を変更したくなることがある。その方法は? - Androidでモバイル通信の使いすぎを事前に警告する (2015/4/1)
スマホ/タブレットで使う携帯キャリア回線の料金プランでは、1カ月当たりの通信容量の上限が決まっている。それを超える前に警告が表示されるようにするには? - 第455話 サイン (2015/3/31)
おお山本くん。どうした、ちょっとお疲れの様子だな。何、そんなことない? いやいや、ウソはいかんぞ、キミ
|
|
キャリアアップ
- - PR -
イベントカレンダー
ホワイトペーパー(TechTargetジャパン)
- - PR -