"find: argomento mancante a '-exec'" quando si utilizza "-exec rm -f {} \"

11

Eseguo questo comando:

~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\

ho ottenuto l'output di seguito:

> IMAG1806.jpg

Error:
find: missing argument to '-exec'

qual è il comando esatto per trovare qualsiasi file dalla directory corrente e rimuoverlo con -exec ?

    
posta Akshay Patel 18.04.2015 - 21:33
fonte

2 risposte

28

Hai perso il ; alla fine (e anche uno spazio tra {} e ; ). Il comando corretto è:

find . -type f -name "IMAG1806.jpg" -exec rm -f {} \;

; indica la fine del predicato -exec di find .

Nota anche che abbiamo usato \; ie \ davanti a ; per evitare l'interpretazione di ; per shell, altrimenti la shell tratterà ; come fine dell'intero comando find e find genererà lo stesso errore. Puoi anche utilizzare ';' anziché \; .

Alla fine avevi usato \ , questo indica che la tua shell continuerà a ricevere input tramite PS2 (indicato da > ), hai digitato IMAG1806.jpg di nuovo, quindi l'intero comando diventa:

find . -type f -name "IMAG1806.jpg" -exec rm -f {}IMAG1806.jpg

Come puoi vedere, questo non è un comando valido con IMAG1806.jpg alla fine, nessuna chiusura del predicato -exec e senza uno spazio tra {} e \; .

    
risposta data heemayl 18.04.2015 - 21:36
fonte
6

Puoi semplicemente

find . -type f -name 'IMAGE1806.jpg' -delete

Dalla pagina man:

Delete files; true if removal succeeded.  If the removal failed,
an  error message is issued.  If -delete fails, find's exit sta‐
tus will be nonzero (when it eventually exits).  Use of  -delete
automatically turns on the -depth option.
    
risposta data Burhan Khalid 19.04.2015 - 06:47
fonte

Leggi altre domande sui tag