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.