Questão O que significa “{} \;” no find (no Linux)?


Às vezes eu vejo um comando como

find . -name * -exec ls -a {} \;

Me pediram para executar isso.

O que {} \; quer dizer aqui?


3


origem


este pergunta é semelhante, isso ajuda você? - Frank
Por favor, mencione qual sistema operacional você está usando. tem find comandos para Unix, Linux, OSX, Windows e provavelmente todo o resto. Parece nix, mas não tenho certeza. - terdon
Sim, encontrei as boas respostas aqui askubuntu.com/questions/85709/… - codeofnode


Respostas:


o \; é um ; alimentado ao programa (encontrar) pelo \ escape evitando que ele seja manipulado pelo shell (normalmente separaria os comandos). o -exec argumento interpreta tudo como um comando até que inserido ; que termina o -exec coisa. Dentro do -exec coisas um argumento de {} significa "insira o nome do arquivo aqui". Portanto, se os arquivos forem "foo" e "bar", ele executará "ls -a foo" e "ls -a bar". Então todo esse significado só significa isso porque -exec existe.

o -name * parte do que poderia ter sido feito com * entre aspas. Se não estiver entre aspas, fará coisas muito imprevisíveis porque todos os nomes de arquivos serão inseridos no lugar do * você tem, e esses nomes podem fazer coisas ruins para este comando. Sair -name * para uma execução mais segura desse comando (mas não sei sua intenção de entender por que isso estava lá).


5