我有一個目錄樹,其中包含約 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 腳本,則需要執行此命令一次以允許執行腳本:
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
完成後,您可以在 PowerShell 提示字元下鍵入腳本.\
名稱(例如 )來呼叫該腳本.\phpstatus.ps1
。 (製表符補全有效。)由於輸出是 PowerShell 物件的集合,因此您可以對它們使用標準 PowerShell 資料管理命令。