Respuestas:
El equivalente directo es
find . -iname <filename>
que enumerará todos los archivos y directorios llamados <filename>
en el directorio actual y cualquier subdirectorio, ignorando mayúsculas y minúsculas.
Si su versión de find no es compatible -iname
, puede usarla -name
en su lugar. Tenga en cuenta que -iname
, a diferencia , distingue entre -name
mayúsculas y minúsculas.
Si solo desea enumerar los archivos llamados <filename>
, y no los directorios, agregue-type f
find . -iname <filename> -type f
Si desea utilizar comodines, debe poner comillas alrededor, p. Ej.
find . -iname "*.txt" -type f
de lo contrario, el shell lo expandirá.
Como otros han señalado, también puedes hacer:
find . | grep "\.txt$"
grep
imprimirá líneas basadas en expresiones regulares, que son más potentes que los comodines, pero tienen una sintaxis diferente.
Ver man find
y man grep
para más detalles.
<filename>
como marcador para la entrada del usuario es un mal hábito en el entorno de línea de comandos, donde la < and >
mayoría de las veces tiene un significado específico. Sugiero simplemente usar filename
, tal vez FILENAME para enfatizarlo. La mayoría de las personas lo entenderán, y aquellos que no lo harán, podrían causar daño cuando no comprendan que se supone que no deben alcanzar un signo menor o mayor que.
<filename>
es una convención en mucha documentación de UNIX, por lo que creo que es útil que la gente lo sepa, pero estoy de acuerdo en que FILENAME
podría ser más fácil de entender.
find -iname <filename>
es mejor ya que no distingue entre mayúsculas y minúsculas como DOS
Algunas conchas lo permiten ls **/filename
, lo cual es bastante conveniente.
shopt -s globstar; echo **/filename
es equivalente afind . -name "filename"
. También funciona en zsh.
shopt -s globstar
, probablemente funcionará para usted. El globing recursivo es una función que solo está disponible en algunos shells y, a veces, no está activada de forma predeterminada.
shopt
comando habilita la opciónglobstar on
. Ahora funciona como un encanto! Muchas gracias.
Puedes hacer esto con
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'
(no sé si la egrep
parte es importante, pero usó egrep
en su respuesta, así que la incluí)
grep
usa expresiones regulares, mientras que el comando DOS usa comodines de shell.
find . -name "*.*"
no hará lo que esperarías de un fondo de DOS. Sin embargo, los globos están lo suficientemente cerca como para ser reconocibles, mientras que las expresiones regulares son una bestia completamente nueva.
*.*.*
en un dos moderno, es decir, Windows cmd? ¿Qué hay de *.*.*.*
?
También puede ser: tree -if </your/path>
o 'pwd'
como un camino
<filename>
contiene comodines, utilice comillas alrededor, pfind . -name '*.txt'
. Ej .