Mi amigo me dijo que se puede trabajar con el modificador -r para buscar archivos de forma recursiva en directorios y subdirectorios. Por favor, dígame el error en la declaración dada, no funciona.
find / -type f -r -name "abc.txt"
Respuesta1
La razón por la que no funciona es porque buscar no tiene -r
opción. Si bien es cierto que para muchos programas la -r
bandera significa "recursivo", este no es el caso para todos y no es el caso para find
. El trabajo de find
es buscar archivos y directorios, no es muy frecuente que ustednoQuiero que sea recursivo.
Puede comprobar las opciones de la mayoría de los programas con el man
comando. Por ejemplo, man find
. Dado que el manual de búsqueda es enorme, es posible que desee buscar la -r
opción:
$ man find | grep -w -- -r
El -- simplemente le dice a grep que deje de leer las opciones; sin él, -r se pasaría como una opción para grep. Además, puede buscar dentro de la página de manual presionando, /
luego escribiendo lo que desea buscar y luego ingresando.
Ese comando no devuelve nada, compáralo con este que busca en el manual de cp
:
$ man cp | grep -w -- -r
-R, -r, --recursive
Como find
siempre es recursivo, lo que sí tiene es lo inverso, una bandera que te permite elegir a cuántos subdirectorios debe descender:
-maxdepth levels
Descend at most levels (a non-negative integer) levels of direc‐
tories below the command line arguments. -maxdepth 0
means only apply the tests and actions to the command line
arguments.
-mindepth levels
Do not apply any tests or actions at levels less than levels (a
non-negative integer). -mindepth 1 means process all files
except the command line arguments.
Entonces, siempre que tengas dudas sobre un comando, lee su man
página porque nunca sabes qué podría hacer una opción en particular. Por ejemplo:
$ man sort | grep -w -- -r
-r, --reverse
$ man mount | grep -w -- -r,
-r, --read-only
$ man awk | grep -A 8 -w -- -r
-r
--re-interval
Enable the use of interval expressions in regular expression
matching (see Regular Expressions, below). Interval expressions
were not traditionally available in the AWK language. The POSIX
standard added them, to make awk and egrep consistent with each
other. They are enabled by default, but this option remains for
use with --traditional.
$ man sed | grep -w -- -r
-r, --regexp-extended
$ man xterm | grep -w -- -r
-r This option indicates that reverse video should be simulated by
swapping the foreground and background colors.
Entiendes la idea.
Respuesta2
find
ya es recursivo, no necesitas el-r