2017-01-25 70 views
1

所以我不知道這是否可以實現,我見過的所有答案處理知道確切的文件名......但在這裏它:使用powershell搜索

我想通過搜索一個有-2,000首歌曲的目錄,但我不想知道整個文件的名稱(因爲它們中的一些可能變得漫長而複雜)。下面是我想要的一個例子: 我知道我可以顯示所有的目錄的內容這樣做:

Get-ChildItem C:\My\Path\To\Songs\Here 

但我想這樣做(因爲該目錄包含了約2000首歌曲)是搜索,以便我只需從標題中輸入幾個單詞,並且只有那些包含這些單詞的歌曲彈出。例如:

如果該文件的全稱是「每個人都夭折」,我搜索關鍵字「大家」我想下面彈出:

大家 大家愛大家 我不能噸得到與大家 等 等 等

這是可能的搜索關鍵詞在一個目錄,並用這些關鍵字返回所有文件名?我運行Windows 7,是否可以幫助任何人在所有...

+0

嘗試'GET-ChildItem -Path C:\我的\路徑\爲\ \歌曲這裏-Recurse -Filter *人人*' – Nkosi

+0

@Nkosi這有效!我希望我能給你答案的功勞! –

+1

'Get-Help'是powershell中的朋友。使用'Get-Help Get-ChildItem'可以獲得關於該cmdlet的更多文檔。對任何命令都使用相同的命令,並且您會對豐富的信息感到驚訝。 – Nkosi

回答

2

使用-Filter參數

Get-ChildItem -Path C:\My\Path\To\Songs\Here -Recurse -File -Filter *Everybody* 

參考:Get-ChildItem

-Filter

在指定的過濾器提供者的格式或語言。此參數的值爲 限定Path參數。過濾器的語法(包括使用通配符)取決於提供者。過濾器的效率比其他參數高 ,因爲提供者在檢索對象時應用 而不是Windows PowerShell在從 提供程序中檢索對象後過濾對象。

更新:

得到公正的文件路徑,你可以通過將文件管道連接到每個循環提取等等

Get-ChildItem -Recurse -File -Filter *Everybody* | % {$_.FullName} 

或者

Get-ChildItem -Recurse -File -Filter *Everybody* | Foreach-Object {$_.FullName} 

擴展它完整路徑。如果你想有一個過濾器的更多elabored你可以做到這一點

1

Get-ChildItem -Recurse -File | where {$_.Name -like "*word1*" -and $_.Name -notlike "*word2*"} | select FullName