Como funciona o -exec?

1

Estou confuso com o comando -exec . Por exemplo. neste caso:

find . -type f -name "*.c" -exec cat {} \;>all_c_files.txt

Parece que recebo cat file1 file2 file3 ... fileN

Enquanto neste caso:

find . -type f -name "*.txt" -exec cp {} OLD \;

Eu recebo:

'cp file1 OLD'  
'cp file2 OLD'  
'cp file3 OLD'  
...  
'cp fileN OLD'  

Caso semelhante, e. em:

find . -type f -name "*.txt" -exec printf "Text file: %s\n" {} \;

Parece fazer:

printf "Text file: file1"  
printf "Text file: file2"  
printf "Text file: file3"  
...  
printf "Text file: fileN"  

Então, como exec funciona? Quero dizer, estou certo de que se comporta de maneira diferente neste exemplo?

    
por Jim 29.06.2013 / 23:30

1 resposta

5

Suponho que você esteja confuso com o comando cat (e o redirecionamento de shell) e não com find one.

find . -type f -name "*.c" -exec cat {} \; > all_c_files.txt é equivalente a:

(
  cat file1 ;
  cat file2 ;
  cat file3 ;
  ... 
  cat fileN
) > all_c_files.txt

obviamente, o comando anterior e o seguinte têm o mesmo resultado idêntico:

cat file1 file2 file3 ... fileN > all_c_files.txt
    
por 29.06.2013 / 23:43