No, no hay un cmd de Windows o PowerShell integrado equivalente al locate
comando de Linux / GNU . Sin embargo, los equivalentes funcionales incluyen cmd.exe dir /s
como se describe en JKarthik
, y estas opciones de PowerShell:
PS> Get-ChildItem -Recurse . file-with-long-name.txt
Tenga en cuenta el uso de .
, diciéndole a PowerShell desde dónde comenzar la búsqueda. Por supuesto, puede acortar al escribir en la línea de comando:
PS> gci -r . file-with-long-name.txt
Hago esto mucho, así que agregué una función a mi perfil:
PS> function gcir { Get-ChildItem -Recurse . @args }
PS> gcir file-with-long-name.txt
Esto permite comodines, similares a locate
:
PS> gcir [a-z]ooo*.txt
Ver help about_Wildcards
para más detalles. Eso también se puede escribir Where-Object
así:
PS> gcir | where { $_ -like "[a-z]ooo*.txt"}
locate
tiene una opción para combinar con expresiones regulares. También lo hace PowerShell:
PS> gcir | where { $_ -match "A.*B" }
PowerShell admite expresiones regulares .NET completas. Ver about_Regular_Expressions
.
También puede hacer otros tipos de consultas:
PS> gcir | where { $_.Length -gt 50M } # find files over 50MB in size
El rendimiento de estos enfoques es lento para grandes colecciones de archivos, ya que solo busca en el sistema de archivos. GNU locate
usa una base de datos . Windows ahora tiene una base de datos de búsqueda, llamada Windows Desktop Search . Hay una API para WDS, que alguien ha incluido con un cmdlet de PowerShell, aquí: http://www.codeproject.com/Articles/14602/Windows-Desktop-Search-Powershell-Cmdlet , que permite cosas como:
PS> get-wds “kind:pics datetaken:this month cameramake:pentax”
con un rendimiento mucho mejor que Get-ChildItem
, y este tipo de consulta enriquecida (y sintaxis incómoda). Además, tenga en cuenta que las comillas rizadas funcionan bien en PowerShell, por lo que no es necesario editar esa muestra al copiarla / pegarla.
Quizás alguien encuentre (o escriba) cmdlets de PowerShell que permitan consultas idiomáticas a WDS.
locate
, ¿puede describir lo que quiere que haga?