1 votes

Pourquoi trouve-t-on. -maxdepth 1 avec l'option/flag -a ne renvoie aucun résultat sous Linux ?

Je voudrais trouver tous les fichiers png ET jpg et j'ai utilisé la commande suivante et aucun résultat n'est renvoyé, cependant si je remplace -a mit -o il me montre la liste des fichiers. Comment cela se fait-il ?

`find . -maxdepth 1 \( -iname \*\.png -a -iname \*\.jpg \)

2voto

slhck Points 209720

Une erreur de logique. Ce que vous dites find est :

trouver, dans ce dossier, tous les fichiers qui sont (PNG et JPG)

Mais, bien sûr, il n'y a pas de fichiers qui sont les deux en même temps, c'est pourquoi le -o travaux :

trouver, dans ce dossier, tous les fichiers qui sont (PNG ou JPG)

Lorsque vous construisez ces requêtes, imaginez simplement find en passant chaque fichier au test. Ensuite, appliquez logique booléenne . Ainsi, par exemple :

  • Il trouve un fichier .txt. Ce n'est pas un PNG (faux), et pas un JPG (faux), alors false && false équivaut à faux

  • Il s'agit bien d'un fichier .png. Il s'agit d'un PNG (vrai) et non d'un JPG (faux). true && false équivaut à faux

  • Il s'agit bien d'un fichier .jpg. Ce n'est pas un PNG (false), et c'est un JPG (true), donc false && true équivaut à faux

  • Si vous utilisez le -o et qu'il trouve un fichier .png, alors il s'agit d'un PNG (vrai) et non d'un JPG (faux), donc vrai | | faux est égal à vrai.

2voto

parkydr Points 2234

-a est un ET logique, ce qui signifie que le nom du fichier doit se terminer à la fois par .PNG et .JPG pour être vrai.

-o est un OU logique inclusif signifiant que le nom du fichier doit se terminer par .PNG ou .JPG (ou les deux) pour être vrai.

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