我試圖在Powershell中執行相應的linux命令find . | grep [search_string]
。管道Get-Childitem到SelectString中選擇文件內容而不是文件名
當我呼叫Get-ChildItem -recurse | Select-String [search_string]
時,它與文件的內容相匹配,而不僅僅是我試圖匹配的文件名。
我怎樣才能看到文件名?
我試圖在Powershell中執行相應的linux命令find . | grep [search_string]
。管道Get-Childitem到SelectString中選擇文件內容而不是文件名
當我呼叫Get-ChildItem -recurse | Select-String [search_string]
時,它與文件的內容相匹配,而不僅僅是我試圖匹配的文件名。
我怎樣才能看到文件名?
展開文件的Name
或FullName
屬性的對象首先:
Get-ChildItem -Recurse |
Select-Object -Expand FullName |
Select-String [search_string]
要獲得比賽的全名擴大導致MatchInfo
對象的Line
屬性:
Get-ChildItem -Recurse |
Select-Object -Expand FullName |
Select-String [search_string] |
Select-Object -Expand Line
或使用一個Where-Object
過濾器代替Select-Object
:
Get-ChildItem -Recurse |
Select-Object -Expand FullName |
Where-Object { $_ -match [search_string] }
更好的使用方法是使用Where-Object
cmdlet,只需按照該方式匹配文件名即可。
例如,假設你有一個這樣的目錄,並且你想用名字中的火腿來獲取文件。
Directory: T:\stack
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 4/5/2016 11:28 AM cat-1
d----- 4/5/2016 11:28 AM cat-2
d----- 4/5/2016 11:28 AM cat-3
d----- 4/5/2016 11:28 AM cat-4
d----- 4/5/2016 11:28 AM cat-5
d----- 4/5/2016 11:28 AM dog-1
d----- 4/5/2016 11:28 AM dog-2
d----- 4/5/2016 11:28 AM dog-3
使用這個語法Dir | Where-Object Name -like *string*
你可以很容易地找到匹配的文件或文件夾:
dir | ? Name -like ham*
Directory: T:\stack
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 4/5/2016 11:28 AM ham-1
d----- 4/5/2016 11:28 AM ham-2
d----- 4/5/2016 11:28 AM ham-3
d----- 4/5/2016 11:28 AM ham-4
d----- 4/5/2016 11:28 AM ham-5
易
function locate{
param(
[Parameter(Mandatory=$False,Position=2)]
[string] $loc = '.',
[Parameter(Mandatory=$True,Position=1)]
[string] $search
)
(gci $loc -Recurse).FullName | Select-String $search
}
PS C:\Users\username\Documents> locate somefile
C:\Users\username\Documents\somefile.csv
或
PS C:\Users\username\Documents> locate somefile ..
C:\Users\username\Documents\somefile.csv
C:\Users\username\Downloads\somefile.txt
C:\Users\username\Pictures\somefile.pst
我怎樣才能讓它給我選擇的文件的完整路徑? – PortMan
@PortMan查看更新後的答案。 –