![o que este comando faz? encontre o comando com opções](https://rvso.com/image/1157173/o%20que%20este%20comando%20faz%3F%20encontre%20o%20comando%20com%20op%C3%A7%C3%B5es.png)
mas uma pergunta: o que esse comando faz? Eu sei o comando find, mas não há opções, como expressão entre aspas e também -exec e ...
find /var -name "[0-9]*test[A-Z]" -exec {} /root/{}';'
Responder1
find /var
instrui find
para iniciar a pesquisa no diretório /var
.
-name "[0-9]*test[A-Z]"
é o padrão de pesquisa para instruir find
a retornar apenas arquivos/pastas que correspondam ao padrão "[0-9]*test[A-Z]"
. Se você não citar a string de pesquisa, seu shell expandirá esse padrão de pesquisa e tentará executar o resultado. Ao citar o padrão de pesquisa, você o passa como argumento para find /var -name
.
A -exec...
parte da pergunta original tem um erro de sintaxe e deveria ter -exec {} /root/{} ';'
(observe o espaço antes ';'
comentado por sobremesa e margarida).
Ele instrui find
a executar os seguintes argumentos, onde {}
é substituído pelo resultado da pesquisa de find
. Normalmente você também deve citá-los para evitar a expansão do shell.
Por último, ';'
define como a -exec
seção deve tratar os resultados da pesquisa ao executar o comando. ';'
instrui find a executar o comando de -exec
para cada resultado de find. Ao usar '+'
, o -exec
comando é executado com todos os resultados da localização expandidos. Isso também deve ser citado ou escapado para evitar que o shell o expanda e apresente um argumento para find...-exec
.
Um pequeno exemplo que ilustra a diferença entre ";"
e "+"
é o seguinte.
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" ";"
./12ltestA
./1ltestA
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" "+"
./12ltestA ./1ltestA