Нет, нет встроенного командлета Windows или PowerShell, эквивалентного команде locate
в Linux/GNU. Однако функциональные эквиваленты включают CMD.exe в dir /s
, как описано JKarthik
и эти варианты PowerShell:
PS> Get-ChildItem -Recurse . file-with-long-name.txt
Обратите внимание на использование .
, сообщая PowerShell, с чего начать поиск. Вы можете, конечно, сократить при наборе в командной строке:
PS> gci -r . file-with-long-name.txt
Я делаю это много, поэтому я добавил функцию в свой профиль:
PS> function gcir { Get-ChildItem -Recurse . @args }
PS> gcir file-with-long-name.txt
Это позволяет использовать символы подстановки, похожие на locate
:
PS> gcir [a-z]ooo*.txt
См. help about_Wildcards
для более подробной информации. Это также можно записать с помощью Where-Object
следующим образом:
PS> gcir | where { $_ -like "[a-z]ooo*.txt"}
locate
есть возможность сопоставления с регулярными выражениями. Так же как и PowerShell:
PS> gcir | where { $_ -match "A.*B" }
PowerShell поддерживает полные регулярные выражения .NET. Смотрите about_Regular_Expressions
.
Вы также можете выполнять другие типы запросов:
PS> gcir | where { $_.Length -gt 50M } # find files over 50MB in size
Производительность этих подходов медленна для больших коллекций файлов, поскольку она просто ищет файловую систему. GNU locate
использует базу данных. В Windows теперь есть база данных с возможностью поиска, которая называется Windows Desktop Search. Существует API для WDS, который кто-то обернул командлетом PowerShell, здесь: http://www.codeproject.com/Articles/14602/Windows-Desktop-Search-Powershell-Cmdlet, позволяющий выполнять следующие действия:
PS> get-wds “kind:pics datetaken:this month cameramake:pentax”
с гораздо лучшей производительностью, чем Get-ChildItem
, и такого рода расширенный запрос (и неудобный синтаксис). Также обратите внимание, что фигурные кавычки отлично работают в PowerShell, поэтому нет необходимости редактировать этот образец при копировании / вставке.
Может быть, кто-то найдет (или напишет) командлеты PowerShell, которые разрешают идиоматические запросы к WDS.