web-dev-qa-db-fra.com

"find: argument manquant pour` -exec '"lors de l'utilisation de" -exec rm -f {} \ "

Je lance cette commande:

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

j'ai eu la sortie ci-dessous:

> IMAG1806.jpg

Error:
find: missing argument to `-exec'

quelle est la commande exacte pour rechercher un fichier dans le répertoire en cours et le supprimer avec -exec?

12
Akshay Patel

Vous avez manqué le ; à la fin (et un espace aussi entre {} et ;). La commande correcte est:

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

; indique la fin du -exec prédicat de find.

Notez également que nous avons utilisé \; c'est-à-dire \ devant ; pour échapper à l'interprétation de ; par Shell, sinon Shell traitera ; comme étant la fin de la commande entière find et find et la même erreur. Vous pouvez également utiliser ';' au lieu de \;.

Vous utilisiez \ à la fin, cela indique que votre shell continuera à prendre des entrées via PS2 (indiqué par >), vous avez à nouveau saisi IMAG1806.jpg, de sorte que la commande entière devient:

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

Comme vous pouvez le constater, ce n'est pas du tout une commande valide avec IMAG1806.jpg à la fin, aucune fermeture du prédicat -exec et sans espace entre {} et \;.

29
heemayl

Vous pouvez simplement

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

De la page de manuel:

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.
7
Burhan Khalid