8 votes

Comment utiliser plusieurs critères pour la commande `find` ?

J'ai un dossier dans lequel je garde ma musique non étiquetée et dans lequel je veux lancer un script pour supprimer tous les fichiers PNG et JPG, à l'exception de ceux commençant par le mot "cover".

Voici ce que j'ai essayé de faire (je n'ai pas inclus l'élément -delete à la fin volontairement) :

find . -name '*.jpg' -or -name '*.png' -not - -name 'cover.*'

find . (-name '*.jpg' -or -name '*.png'\) -not - -name '*.png'

J'ai également essayé d'autres variantes des deux commandes ci-dessus, mais aucune n'a fonctionné.

11voto

BeastOfCaerbannog Points 8327

La commande que vous recherchez est la suivante :

find . -type f \( -name '*.jpg' -or -name '*.png' \) -not -name "cover.*"
  • Ajout type -f rendra le find ne recherche que des fichiers.

  • Dans votre deuxième commande, vous devez ajouter un espace après \( et avant \) (vous avez également oublié \ avant ( ).

  • De plus, vous n'avez pas besoin d'un - entre -not y -name . Votre première commande fonctionne correctement si vous la supprimez, bien qu'elle ne produise pas la sortie que vous souhaitez (voir la page de JoL intitulée commentaire ).

Vous pouvez en savoir plus sur find à la syntaxe et aux options de la commande en ligne. Page de manuel Ubuntu ou exécutez la commande man find pour lire le manuel dans le terminal. Plus précisément, lisez le OPERATORS du manuel, puisque c'est ce qui semble vous perturber le plus.

Remarque : La plupart des commandes de terminal fournissent un manuel indiquant la syntaxe correcte de la commande et les options disponibles, que vous pouvez lire si vous lancez man <command> dans votre terminal.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X