Sto cercando di capire come eseguire ricerche con caratteri jolly per i nomi di file con mdfind su OsX? Ho provato: mdfind -name "*.pdf"
ma non ha funzionato.
EDIT: voglio essere in grado di trovare nomi come "test * .pdf"
Questo dovrebbe funzionare:
mdfind "kMDItemDisplayName == test*.pdf"
Racchiudi il pattern tra virgolette singole e aggiungi "c" in modo che corrisponda senza distinzione tra maiuscole e minuscole:
mdfind "kMDItemDisplayName == 'test*.pdf'c"
Qui è un elenco di attributi disponibili. Puoi combinare più coppie di attributi / valori con &&
.
Quando cerchi esplicitamente i nomi del file, la mia esperienza è che l'attributo kMDItemFSName
fornisce risultati più concisi. Un altro suggerimento: aggiungi il modificatore di confronto d
(insensibile ai segni diacritici) ad es. abbina un file chiamato "Entrée Menu.pdf" durante la ricerca di "antipasto" :
mdfind 'kMDItemFSName == "*entree*"cd'
Inoltre, poiché il collegamento di @ tcmb al riferimento agli attributi è morto, qui ci sono due tipi di lavoro: Attributi metadati Spotlight e Impostati dei metadati diCloud .
macOS viene fornito con il normale comando find
e mdfind
non sostituisce find
.
Se vuoi veramente cercare nella directory corrente tutti i file pdf, dovresti probabilmente fare find . -name '*.pdf'
Di default mdfind
ricerca per contenuto di file e metadati e ricerca l'intero disco rigido invece di una singola directory - sul mio sistema mdfind pdf
trova decine di migliaia di risultati.
Se devi utilizzare mdfind, perché è più veloce, hai alcune opzioni per limitare i risultati, ad esempio:
mdfind pdf -onlyin .
mdfind 'kMDItemFSName = *.pdf' -onlyin .
mdfind 'kMDItemContentTypeTree = *.pdf' -onlyin .
Usa mdls
per sapere quali metadati sono disponibili per un file e la sintassi per la corrispondenza dei pattern è molto minimalista poiché deve corrispondere all'indice del database del tuo filesystem.
In alternativa puoi mdfind
con grep
, dando la velocità di mdfind
e la piena corrispondenza regolare sul percorso del file. Ad esempio:
mdfind pdf -onlyin . | grep 'pdf$'
Un ultimo avvertimento è mdfind
non cerca il tuo file system attuale, cerca solo nel database di Spotlight che potrebbe mancare parti del filesystem o impreciso. Usa find
se hai bisogno di risultati affidabili. Usa mdfind
quando hai bisogno di velocità eccessiva e quando hai bisogno di termini di ricerca complicati (ad esempio trova tutti i file PDF creati in un intervallo di date specifico e contengono una frase di testo).