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

3

Às vezes, vejo um comando como

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

Fui solicitado a executar isso.

O que significa {} \; aqui?

    
por codeofnode 29.08.2013 / 20:36

1 resposta

5

O \; é um ; alimentado ao programa (find) pelo escape \ , impedindo que ele seja manipulado pelo shell (normalmente, separar comandos). O argumento -exec interpreta tudo como um comando até aquele ; inserido que termina o -exec stuff. Dentro do -exec stuff, 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 significa apenas porque -exec está lá.

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

    
por 30.08.2013 / 02:53