我正在搜索所有文件夾中的文件。使用PowerShell進行遞歸文件搜索
Copyforbuild.bat
在許多地方都可用,我想遞歸搜索。
$File = "V:\Myfolder\**\*.CopyForbuild.bat"
如何在PowerShell中執行此操作?
我正在搜索所有文件夾中的文件。使用PowerShell進行遞歸文件搜索
Copyforbuild.bat
在許多地方都可用,我想遞歸搜索。
$File = "V:\Myfolder\**\*.CopyForbuild.bat"
如何在PowerShell中執行此操作?
使用Get-ChildItem cmdlet與-Recurse
開關:
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force
試試這個:
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse | Where-Object { $_.Attributes -ne "Directory"}
您也可以使用'| Where-Object {!$ _PSIsContainer}'排除文件夾 – Gargravarr 2016-06-17 11:23:59
Get-ChildItem V:\MyFolder -name -recurse *.CopyForbuild.bat
此外還將努力
我知道這個問題是老了,但我可以不要對Shay Levy的回答發表評論。
當搜索文件夾,你就可能會基於安全性的錯誤(例如,C:\Users
)使用下面的命令:使用通配符
Get-ChildItem -Filter CopyForBuild* -Include *.bat,*.cmd -Exclude *.old.cmd,*.old.bat -Recurse
過濾
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force
過濾器使用正則表達式
Get-ChildItem -Path "V:\Myfolder" -Recurse
| Where-Object { $_.Name -match '\ACopyForBuild\.[(bat)|(cmd)]\Z' }
我用它來查找文件,然後讓PowerShell顯示結果整個路徑:
dir -Path C:\FolderName -Filter FileName.fileExtension -Recurse | %{$_.FullName}
你總是可以使用通配符*
在文件夾名稱和/或FileName.fileExtension。例如:
dir -Path C:\Folder* -Filter File*.file* -Recurse | %{$_.FullName}
上面的例子將搜索在C:\
驅動字Folder
開頭的任何文件夾。所以,如果您有一個名爲FolderFoo
和FolderBar
的文件夾,PowerShell將顯示來自這兩個文件夾的結果。
同樣適用於文件名和文件擴展名。如果你想搜索與特定擴展名的文件,但不知道該文件的名稱,你可以使用:
dir -Path C:\FolderName -Filter *.fileExtension -Recurse | %{$_.FullName}
或相反:
dir -Path C:\FolderName -Filter FileName.* -Recurse | %{$_.FullName}
我覺得這個答案非常有用,因爲它解決了一個特定的用例 - 實際上想要使用您正在尋找的文件。 |給你的文件的全名是在其他答案中缺少的東西。 – Sanity1123 2017-08-01 15:17:29
似乎有一個問題,如果它會運行到您無權訪問的目錄中,整個搜索會因流程退出而中止。有沒有辦法解決這個問題? – deed02392 2013-06-20 11:24:14
嘗試將ErrorAction參數設置爲Continue或SilentlyContinue(如果它的值不像前面提到的那樣)。 – 2013-06-20 11:56:54
做一件簡單的事情: 'cd v:\ MyFolder'後面跟着 'ls -r -inc CopyForBuild.bat' – 2014-08-14 21:57:09