0 votes

Recherche de plusieurs fichiers à la fois via le terminal

J'ai une liste de noms de fichiers comme ceci :

P1020804.JPG
P1020805.JPG
P1020806.JPG
P1020807.JPG
P1020808.JPG

Comment les retrouver au mieux par une seule requête dans Spotlight, Terminal, mdfind ou locate ?

3voto

user3439894 Points 52496

Je vais supposer que votre lista est juste une liste représentative et le noms de fichiers Suivez cela motif et peut en fait être plus que ces noms de fichiers exacts. Ainsi, l'utilisation d'un expression régulière étendue va être utilisé pour trouver les fichiers correspondant aux motif indiqués dans les exemples de noms de fichiers dans votre OP.

find -E . -regex '.*\/P[0-9]{7}\.JPG'
  • -E Interpréter les expressions régulières suivies de -regex y -iregex comme des expressions régulières étendues (modernes) plutôt que des expressions régulières de base (BRE). Le site re_format(7) La page du manuel d'utilisation décrit entièrement les deux formats.
  • . Recherche dans le répertoire courant et ses sous-répertoires.
  • -regex pattern Vrai si le chemin d'accès complet du fichier correspond au modèle utilisant une expression régulière.
  • .*\/P[0-9]{7}\.JPG
    • .* correspond à n'importe quel caractère (à l'exception des terminaisons de ligne).
    • * Quantificateur - Correspond entre zéro et un nombre illimité de fois, autant de fois que possible, en redonnant au besoin (gourmand).
    • \/ correspond au caractère / littéralement (sensible à la casse).
    • P correspond au caractère P littéralement (sensible à la casse).
    • [0-9] correspond à un seul caractère présent dans la liste.
    • {7} Quantificateur - Correspond exactement à 7 fois, 0-9 un caractère unique compris entre 0 (indice 48) et 9 (indice 57) (sensible à la casse).
    • \. correspond au caractère . littéralement (sensible à la casse).
    • JPG correspond aux caractères JPG littéralement (sensible à la casse).

$ find -E . -regex '.*\/P[0-9]{7}\.JPG'
./Pictures/P1020799.JPG
./Pictures/P1020800.JPG
./Pictures/P1020801.JPG
./Pictures/P1020802.JPG
./Pictures/P1020803.JPG
./Pictures/P1020804.JPG
./Pictures/P1020805.JPG
./Pictures/P1020806.JPG
./Pictures/P1020807.JPG
./Pictures/P1020808.JPG
./Pictures/P1020809.JPG
./Pictures/P1020810.JPG
$

Note : Le . est le répertoire de travail actuel, qui par défaut, si vous venez d'ouvrir Terminal, sera votre répertoire d'accueil. Si les fichiers se trouvent ailleurs, vous pouvez utiliser un autre chemin de départ, par exemple / débutera dans le Racine du disque dur du Macintosh, (en supposant une dénomination par défaut). Comme vous pouvez le voir dans l'exemple de sortie, les noms de fichiers cibles trouvés par la commande motif chiral étaient dans mon dossier d'images.

1voto

Essayez ça :

find . -name 'P1020804.JPG' -o -name 'P1020805.JPG' -o -name 'P1020806.JPG'

Rappelez-vous que . est nécessaire.

1voto

Michael Zhou Points 167
find . \( -name P1020804.JPG -o \
          -name P1020805.JPG -o \
          -name P1020806.JPG -o \
          -name P1020807.JPG -o \
          -name P1020808.JPG \)

find dans le répertoire actuel- . et sous-répertoires, le nom du fichier ou le nom du fichier suivant... et ainsi de suite.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X