"find: fehlendes Argument für '-exec'" bei Verwendung von "-exec rm -f {} \"

11

Ich führe diesen Befehl aus:

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

Ich habe unten ausgegeben:

> IMAG1806.jpg

Error:
find: missing argument to '-exec'

Was genau ist der Befehl, um eine Datei aus dem aktuellen Verzeichnis zu finden und mit -exec ?

zu entfernen?     
Akshay Patel 18.04.2015, 21:33
quelle

2 Antworten

28

Sie haben das a ; am Ende verpasst (und ein Leerzeichen zwischen {} und ; ). Der richtige Befehl lautet:

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

; zeigt das Ende von -exec Prädikat von find an.

Beachten Sie auch, dass wir \; ie \ vor ; verwendet haben, um der Interpretation von ; nach Shell zu entgehen, andernfalls behandelt Shell ; als Ende des gesamten find -Befehls und find wird den gleichen Fehler auslösen. Sie können auch ';' anstelle von \; verwenden.

Sie haben \ am Ende benutzt, dies zeigt an, dass Ihre Shell weiterhin Eingaben über PS2 (angezeigt durch > ) macht, Sie haben IMAG1806.jpg erneut eingegeben, so dass der ganze Befehl zu:

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

Wie Sie sehen, ist dies kein gültiger Befehl mit IMAG1806.jpg am Ende, kein Schließen von -exec Prädikat und ohne Leerzeichen zwischen {} und \; .

    
heemayl 18.04.2015 21:36
quelle
6

Sie können einfach

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

Von der Manpage:

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.
    
Burhan Khalid 19.04.2015 06:47
quelle

Tags und Links