Ich habe eine Liste von Dateinamen wie diese:
P1020804.JPG
P1020805.JPG
P1020806.JPG
P1020807.JPG
P1020808.JPG
Wie finde ich sie am besten alle durch eine einzige Abfrage in Spotlight, Terminal, mdfind oder locate?
Ich gehe davon aus, dass Ihre Liste nur eine repräsentative Liste ist und die Dateinamen diesem Muster folgen und tatsächlich mehr als genau diese Dateinamen sein können. Daher wird die Verwendung eines erweiterten regulären Ausdrucks verwendet, um die Dateien zu finden , die dem Muster entsprechen , das in den Beispieldateinamen in Ihrem OP gezeigt wird.
find -E . -regex '.*\/P[0-9]{7}\.JPG'
-E
Interpretieren Sie reguläre Ausdrücke gefolgt von -regex
und -iregex
Vorwahlen als erweiterte (moderne) reguläre Ausdrücke und nicht als grundlegende reguläre Ausdrücke (BREs). Die re_format(7)
Handbuchseite beschreibt beide Formate vollständig..
Durchsucht das aktuelle Verzeichnis und seine Unterverzeichnisse.-regex pattern
True, wenn der gesamte Pfad der Datei mit dem Muster unter Verwendung eines regulären Ausdrucks übereinstimmt..*\/P[0-9]{7}\.JPG
.*
entspricht jedem Zeichen (außer Zeilenabschlusszeichen).*
Quantifier – Übereinstimmungen zwischen null und unbegrenzt oft, so oft wie möglich, geben nach Bedarf zurück (gierig).\/
stimmt wörtlich mit dem Zeichen überein /
(Groß-/Kleinschreibung beachten).P
(Groß-/Kleinschreibung beachten).[0-9]
Übereinstimmung mit einem einzelnen Zeichen in der Liste.{7}
Quantifier — Entspricht genau 7 Mal 0-9
einem einzelnen Zeichen im Bereich zwischen 0
(Index 48) und 9
(Index 57) (Groß-/Kleinschreibung beachten).\.
stimmt wörtlich mit dem Zeichen überein .
(Groß-/Kleinschreibung beachten).JPG
(Groß-/Kleinschreibung beachten).$ 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
$
Hinweis: Dies .
ist das aktuelle Arbeitsverzeichnis, das standardmäßig Ihr Home-Verzeichnis ist, wenn Sie gerade Terminal geöffnet haben. Wenn sich die Dateien an einem anderen Ort befinden, können Sie einen anderen Startpfad verwenden, z. B. /
im Stammverzeichnis der Macintosh HD (unter der Annahme einer Standardbenennung). Wie Sie in der Beispielausgabe sehen können, befanden sich die vom Regex-Muster gefundenen Zieldateinamen in meinem Bilderordner.
Versuche dies:
find . -name 'P1020804.JPG' -o -name 'P1020805.JPG' -o -name 'P1020806.JPG'
Denken Sie daran, dass dies .
notwendig ist.
find . \( -name P1020804.JPG -o \
-name P1020805.JPG -o \
-name P1020806.JPG -o \
-name P1020807.JPG -o \
-name P1020808.JPG \)
find
im aktuellen Verzeichnis- .
und Unterverzeichnissen, der Dateiname oder der nächste Dateiname... und so weiter.
Thrig