Tendo a estrutura de arquivos assim:
/root/abc/1.txt
/root/abc/2.txt
e sentado no /root
diretório.
1.) Por que o comando não:
encontrar . -caminho "abc / *. txt"
não retorna resultados enquanto
encontrar . -caminho "./abc/*.txt"
e
encontrar . -caminho "* / abc / *. txt"
trabalha?
2.) Qual é a diferença entre find . -path "./abc/*.txt"
efind . -path "*/abc/*.txt"
find . -path "*/abc/*.txt"
simfind . -path "\*/abc/*.txt"
. Você pode ser tão gentil e responder a essa pergunta corrigida?-path
padrão é aplicado ao resultado do quefind .
produz e é por isso que minha primeira tentativa falha?A seguinte frase é da
-path
opção nofind
manual:Isso explica por que seus padrões de pesquisa alternativos (
"./abc/*.txt"
e"*/abc/*.txt"
) funcionam. Seu padrão de pesquisa original ("abc/*.txt"
) funcionará apenas se a raiz da pesquisa forabc
:Quanto à diferença entre
"./abc/*.txt"
e"*/abc/*.txt"
, nem vai tentar expandir a corda antes de chamarfind
: o primeiro vai encontrar apenas os arquivos no diretório de nível superior./abc/
, mas o segundo vai encontrar arquivos em qualquer subdiretórioabc
, como./def/abc/
,./ghi/def/abc/
, etc, bem como./abc/
.fonte
find . -path "*/abc/*.txt"
simfind . -path "\*/abc/*.txt"
. Você pode ser tão gentil e responder a essa pergunta corrigida?"./abc/*.txt"
e"*/abc/*.txt"
é que o primeiro corresponderá./abc
somente aos arquivos de texto no diretório de nível superior , enquanto o segundo corresponderá não apenas aqui, mas também em./def/abc
ou em qualquer outro subdiretório mais abaixo na hierarquia.