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
?
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 \;
.
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.