Ho una lista di nomi di file come questa:
P1020804.JPG
P1020805.JPG
P1020806.JPG
P1020807.JPG
P1020808.JPG
Come trovarli al meglio per singola query in Spotlight, Terminal, mdfind o locate?
Immagino che il tuo elenco sia solo un elenco rappresentativo e i nomi di file seguano quel modello e potrebbero effettivamente essere più di quelli nomi di file esatti. Quindi, l'uso di un'espressione regolare estesa verrà utilizzato per trovare i file che corrispondono al modello mostrato nei nomi dei file di esempio nel tuo OP .
find -E . -regex '.*\/P[0-9]{7}\.JPG'
-E
Interpretazione di espressioni regolari seguite da -regex
e -iregex
primari come espressioni regolari (moderne) estese piuttosto che espressioni regolari di base (BRE). La pagina di manuale re_format(7)
descrive completamente entrambi i formati. .
Cerca la directory corrente e le sue sottodirectory. -regex pattern
True se l'intero percorso del file corrisponde a un modello utilizzando l'espressione regolare. .*\/P[0-9]{7}\.JPG
corrisponde a qualsiasi carattere (eccetto per i terminatori di riga). .*
Quantifier - Incontri tra zero e un numero illimitato di volte, il più volte possibile, restituendo se necessario (avido). *
corrisponde al carattere \/
letteralmente (distinzione tra maiuscole e minuscole). /
letteralmente (distinzione tra maiuscole e minuscole). P
corrisponde a un singolo personaggio presente nell'elenco. [0-9]
Quantifier - Corrisponde esattamente a 7 volte, {7}
un singolo carattere nell'intervallo tra 0-9
(indice 48) e 0
(indice 57) (distinzione tra maiuscole e minuscole). 9
corrisponde al carattere \.
letteralmente (distinzione tra maiuscole e minuscole). .
letteralmente (distinzione tra maiuscole e minuscole). $ 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
$
Nota: JPG
è la directory di lavoro corrente, che per impostazione predefinita se hai appena aperto Terminal sarà la tua directory Home. Se i file si trovano altrove, puoi utilizzare un percorso di partenza diverso, ad es. .
inizierà nella radice di Macintosh HD, (assumendo la denominazione predefinita). Come puoi vedere nell'output di esempio, i nomi dei file di destinazione trovati dalla pattern regex erano nella mia cartella Pictures.
Prova questo:
find . -name 'P1020804.JPG' -o -name 'P1020805.JPG' -o -name 'P1020806.JPG'
Ricorda che .
è necessario.
find . \( -name P1020804.JPG -o \
-name P1020805.JPG -o \
-name P1020806.JPG -o \
-name P1020807.JPG -o \
-name P1020808.JPG \)
find
nella directory corrente- .
e sottodirectory, il nome del file o il nome del file successivo ... e così via.