Meu amigo me disse que é possível trabalhar com a opção -r para localizar arquivos recursivamente em diretórios e subdiretórios. Por favor, diga-me o erro na instrução fornecida, ele não funciona
find / -type f -r -name "abc.txt"
Responder1
A razão pela qual não funciona é porque find não tem -r
opção. Embora seja verdade que para muitos programas o -r
sinalizador significa 'recursivo', este não é o caso para todos e não é o caso de find
. O trabalho defind
é procurar arquivos e diretórios, não é muito frequente que vocênãoquero que seja recursivo.
Você pode verificar as opções da maioria dos programas com o man
comando. Por exemplo, man find
. Como o manual de localização é enorme, você pode querer pesquisá-lo pela -r
opção:
$ man find | grep -w -- -r
O -- apenas diz ao grep para parar de ler as opções, sem ele, o -r seria passado como uma opção para o grep. Além disso, você pode pesquisar na página de manual pressionando, /
escrevendo o que deseja pesquisar e digitando.
Esse comando não retorna nada, compare com este que pesquisa no manual do cp
:
$ man cp | grep -w -- -r
-R, -r, --recursive
Como find
é sempre recursivo, o que ele possui é o inverso, um sinalizador que permite escolher em quantos subdiretórios ele deve descer:
-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.
Portanto, sempre que tiver dúvidas sobre um comando, leia sua man
página, pois nunca se sabe o que uma determinada opção pode fazer. Por exemplo:
$ 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.
Você entendeu a ideia.
Responder2
find
já é recursivo, você não precisa do-r