2016-04-05 33 views

回答

2

展開文件的NameFullName屬性的對象首先:

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] } 
+0

我怎樣才能讓它給我選擇的文件的完整路徑? – PortMan

+0

@PortMan查看更新後的答案。 –

0

更好的使用方法是使用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 
0

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 
相關問題