特定の拡張子 ( ) を持つ約 150 個のファイルがさまざまなフォルダーに整理されたディレクトリ ツリーがあります.php
。これらのファイルの一部は、特定のステータスを示すために 2 行目にマークされています。このマークは常に 2 行目にあり、常に特定の形式に従っていることがわかっています。
私が探しているのは、このマークをディレクトリで検索し、次のような出力を簡単に操作できるもの (コマンド、スクリプト、プログラム) です。
.php
理想的な解決策は、ファイル名の横にファイルの 2 行目を表示して、すべてのファイルのリストを提供できるものです。上記のリストは、一致したファイルに対してのみこれを行います。
find
ループで使用してみましたfor
:
for %f in (*.php) do find "Oracle Status" %f
しかし、これは現在のディレクトリを検索するだけであり、わかりやすい方法でフォーマットするわけではありません。
答え1
PowerShell の使用に問題がなければ、次のスクリプトで問題が解決するはずです。
Get-ChildItem *.php -Recurse | ForEach-Object {
$lines = Get-Content $_ -TotalCount 2
If ($lines.Length -GT 1 -And $lines[1].Length -GT 1 -And $lines[1].Contains('Oracle Status:')) {
New-Object -TypeName PSObject -Prop @{'FilePath' = $_.FullName; 'StatusLine' = $lines[1]}
}
}
コンソールに次のような出力が生成されます。
ここで示したバージョンでは行.txt
を含むファイルを検索しましたStatus:
が、上に貼り付けたバージョンでは必要な操作が実行されます。
スクリプトを.ps1
ファイルとして保存します (例: ) phpstatus.ps1
。これまでに PowerShell スクリプトを実行したことがない場合は、スクリプトの実行を許可するために次のコマンドを 1 回実行する必要があります。
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
.\
これが完了したら、に続けてスクリプトの名前を入力することで、PowerShell プロンプトからスクリプトを呼び出すことができます(例.\phpstatus.ps1
: )。(タブ補完が機能します)。出力は PowerShell オブジェクトのコレクションであるため、それらに対して標準の PowerShell データ管理コマンドを使用できます。