mdfind consente le ricerche con caratteri jolly sul nome file?

6

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"

    
posta Casebash 02.08.2014 - 13:07
fonte

3 risposte

12

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 && .

    
risposta data 02.08.2014 - 21:06
fonte
2

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 .

    
risposta data 24.12.2017 - 19:41
fonte
2

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).

    
risposta data 05.06.2018 - 00:15
fonte

Leggi altre domande sui tag