¿Hay alguna forma de evitar que find busque recursivamente en subdirectorios?
Pregunta
Cuando lo hago:
$ find /
Busca en todo el sistema.
¿Cómo evito eso?
(Esta pregunta proviene de un "respuesta" a otra pregunta.)
Solución
Buen día,
Solo quería ampliar la sugerencia de Jon de usar -prune.No es la opción de búsqueda más fácil de usar; por ejemplo, para buscar simplemente en el directorio actual, el comando de búsqueda se ve así:
find . \( -type d ! -name . -prune \) -o \( <the bit you want to look for> \)
esto evitará que la búsqueda descienda a subdirectorios dentro de este directorio.
Básicamente, dice, "elimine cualquier cosa que sea un directorio, cuyo nombre no sea ".", es decir,directorio actual."
El comando de búsqueda evalúa de izquierda a derecha cada elemento encontrado en el directorio actual, de modo que después de completar el primer elemento, es decirel segmento de poda, luego continuará con el elemento coincidente en su segunda expresión -o (OR).
HTH.
Saludos, Rob
Otros consejos
Considerar:
-maxdepth n
True if the depth of the current file into the tree is less than
or equal to n.
-mindepth n
True if the depth of the current file into the tree is greater
than or equal to n.
Quizás sea mejor que utilices comodines.Por ejemplo, si desea encontrar todos los scripts ksh en el directorio actual:
$ ls *.ksh
Utilizar el -ciruela pasa opción.
Incluso puedes hacer
echo /specific/dir/*.jpg
ya que es su shell el que expande el comodín.Mecanografía
ls *.jpg
es equivalente a escribir
ls foo.jpg bar.jpg
dado foo.jpg y bar.jpg son todos los archivos que terminan con ".jpg" en el directorio actual.