¿Hay un equivalente del locate
comando GNU en Windows 7/8?
locate
puede tomar como entrada un nombre de archivo y da como salida todas las rutas donde los archivos nombrados de manera similar a la entrada son, por ejemplo:
locate file-with-long-name.txt
/var/www/file-with-long-name.txt
windows-8
powershell
Maquinilla de afeitar
fuente
fuente
locate
, ¿puede describir lo que quiere que haga?Respuestas:
No, no hay un cmd de Windows o PowerShell integrado equivalente al
locate
comando de Linux / GNU . Sin embargo, los equivalentes funcionales incluyen cmd.exedir /s
como se describe enJKarthik
, y estas opciones de PowerShell: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:Hago esto mucho, así que agregué una función a mi perfil:
Esto permite comodines, similares a
locate
:Ver
help about_Wildcards
para más detalles. Eso también se puede escribirWhere-Object
así:locate
tiene una opción para combinar con expresiones regulares. También lo hace PowerShell:PowerShell admite expresiones regulares .NET completas. Ver
about_Regular_Expressions
.También puede hacer otros tipos de consultas:
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: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.
fuente
Para una solución PowerShell, intente esto:
Esto devuelve todos los archivos que coinciden con el nombre dado en el directorio actual y sus subdirectorios.
El
-Filter
parámetro acepta comodines. Si el directorio actual contiene archivos del sistema a los que no tiene acceso, agréguelos-ErrorAction SilentlyContinue
para suprimir los errores.Para más información, ver
Get-Help Get-ChildItem
.fuente
-ErrorAction SilentlyContinue
a-ea 0
, para facilitar la escritura.locate
(que examina una base de datos generada previamente, con la ventaja de la velocidad y la desventaja de no estar instantáneamente actualizado) yGet-ChildItem
.Puede usar el siguiente comando en el shell de Windows:
Donde nombre de archivo es el nombre del archivo que está buscando y
/s
hace referencia a incluir subdirectorios en la búsqueda.Actualización El siguiente comando con
/B
muestra solo el formato desnudo, exactamente como se requiere. Y esto parece ser un poco más rápido.Intenta:
Fuente: Lista de línea de comandos de Windows 8 y referencia
fuente
locale
ve en una base de datos (generada / actualizada porupdatedb
) y endir
realidad busca en el disco duro completo.dir/s
es lento porque fuerza a la búsqueda (busca en todas partes ). Se remonta a DOS (siendo un comando de DOS), por lo que funciona de esa manera. Sospecho que la única razón por la que todavía existe es como una alternativa en caso de que su base de datos de índice no sea adecuada.locate
(que analiza una base de datos generada previamente, con la ventaja de la velocidad y la desventaja de no estar instantáneamente actualizado) yGet-ChildItem
.