buscar comando en Linux

buscar comando en Linux

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 -ropción. Si bien es cierto que para muchos programas la -rbandera significa "recursivo", este no es el caso para todos y no es el caso para find. El trabajo de findes 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 mancomando. Por ejemplo, man find. Dado que el manual de búsqueda es enorme, es posible que desee buscar la -ropció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 findsiempre 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 manpá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

findya es recursivo, no necesitas el-r

información relacionada