PowerShell で複数のファイル内の文字列を検索してファイル名を返す
-
PowerShell で
Get-ChildItem
およびSelect-String
コマンドレットを使用して複数のファイルの文字列を検索し、ファイルの名前を返す -
複数のファイルの文字列を検索し、PowerShell で
ls
とsls
を使用してファイルの名前を返す
PowerShell を使用して、特定のディレクトリに存在するファイルを表示できます。また、ファイルを再帰的に検索して、サブディレクトリに存在するファイルを見つけることもできます。
しかし、ファイル内の文字列を検索して、PowerShell でそれらのファイルの名前を取得することは可能ですか?答えはイエスです。このチュートリアルでは、複数のファイルで文字列を検索し、PowerShell でファイルの名前を返す方法を説明します。
PowerShell で Get-ChildItem
および Select-String
コマンドレットを使用して複数のファイルの文字列を検索し、ファイルの名前を返す
Get-ChildItem
コマンドレットは、特定の場所に存在するファイルとディレクトリのリストを表示します。-Recurse
パラメータは、すべてのファイル、ディレクトリ、またはサブディレクトリを再帰的に一覧表示するのに役立ちます。ただし、出力には空のディレクトリは表示されません。
Select-String
コマンドレットは、ファイル内の文字列パターンを検索して検索します。
次のコマンドは、C:\pc
ディレクトリ上のすべてのファイルで文字列 system
を検索し、ファイルの完全なパスを一覧表示します。
Get-ChildItem -Path C:\New -Recurse | Select-String -Pattern 'system' -List | Select Path
出力:
Path
----
C:\New\literature_review.pdf
C:\New\Proposal.pdf
C:\New\Draft.pdf
C:\New\Report.docx
C:\New\fyp\Forms.docx
コマンドに Line
を含めると、文字列を含む行を表示することもできます。
Get-ChildItem -Path C:\New -Recurse | Select-String "system" -List | Select Path,Line
複数のファイルの文字列を検索し、PowerShell で ls
と sls
を使用してファイルの名前を返す
ls
コマンドは、Unix および Unix ライクなオペレーティングシステムのファイルとディレクトリを一覧表示するためによく使用されます。ls
コマンドは PowerShell でも使用でき、同様に機能します。
パスが指定されていない場合は、作業ディレクトリに存在するファイルとディレクトリが一覧表示されます。-r
オプションを使用すると、ls
はファイルとディレクトリを再帰的に一覧表示します。
ls C:\pc
出力:
Directory: C:\pc
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 1/2/2022 2:53 PM computing
d----- 1/2/2022 1:24 PM New folder
-a---- 1/2/2022 1:36 PM 17384 hello
-a---- 1/2/2022 2:48 PM 5134 matrix.c
-a---- 12/26/2020 7:03 PM 321 ReadMe.txt
sls
は、Select-String
コマンドレットのエイリアスです。また、ファイル内の文字列パターンを検索します。
以下のコマンドを使用して、複数のファイル内の文字列を検索し、PowerShell でファイルの名前を取得できます。
ls -r -Path C:\pc | sls 'hello' | select -u Path
出力:
Path
----
C:\pc\computing\task3\crack
C:\pc\computing\task3\crack1
C:\pc\computing\task3\crack2
C:\pc\computing\task3\cracked
C:\pc\computing\task3\pass
C:\pc\computing\task3\password.txt
C:\pc\computing\task3\pwd
C:\pc\computing\task4\hello