¿Mdfind permite búsquedas con comodines en el nombre de archivo?

6

¿Estoy intentando averiguar cómo realizar búsquedas de comodines para nombres de archivos con mdfind en OsX? Intenté: mdfind -name "*.pdf" pero no funcionó.

EDITAR: quiero poder encontrar nombres como "test * .pdf"

    
pregunta Casebash 02.08.2014 - 13:07

3 respuestas

10

Esto debería funcionar:

mdfind "kMDItemDisplayName == test*.pdf"

Encierre el patrón entre comillas simples y agregue 'c' para que coincida con mayúsculas y minúsculas:

mdfind "kMDItemDisplayName == 'test*.pdf'c"

Aquí hay una lista de atributos disponibles. Puede combinar varios pares de atributo / valor con && .

    
respondido por el tcmb 02.08.2014 - 21:06
2

Al buscar explícitamente el archivo nombres , mi experiencia es que el atributo kMDItemFSName proporciona resultados más concisos. Otra sugerencia: agregue el modificador de comparación d (insensible a las marcas diacríticas), por ejemplo. haga coincidir un archivo llamado "Entrée Menu.pdf" cuando busque "entrante" :

mdfind 'kMDItemFSName == "*entree*"cd'

También, dado que el enlace de @ tcmb a la referencia de atributos está muerto, aquí hay dos que funcionan: Atributos de metadatos de Spotlight y iCloud Atributos de metadatos .

    
respondido por el luckman212 24.12.2017 - 19:41
2

macOS se envía con el comando regular find , y mdfind no reemplaza a find .

Si realmente solo desea buscar en el directorio actual todos los archivos pdf, probablemente debería hacer find . -name '*.pdf'

Por defecto, mdfind busca por metadatos y contenido de archivos, y busca en todo su disco duro en lugar de en un solo directorio: en mi sistema mdfind pdf encuentra decenas de miles de resultados.

Si debe usar mdfind, porque es más rápido, tiene algunas opciones para limitar los resultados, por ejemplo:

mdfind pdf -onlyin .
mdfind 'kMDItemFSName = *.pdf' -onlyin .
mdfind 'kMDItemContentTypeTree = *.pdf' -onlyin .

Use mdls para conocer qué metadatos están disponibles para un archivo, y la sintaxis para la coincidencia de patrones es muy minimalista, ya que debe coincidir con el índice de la base de datos de su sistema de archivos.

Alternativamente, puede mdfind con grep , dando la velocidad de mdfind y la coincidencia completa de expresiones regulares en la ruta del archivo. Por ejemplo:

mdfind pdf -onlyin . | grep 'pdf$'

Una advertencia final es que mdfind no busca en su sistema de archivos real, solo busca en la base de datos de Spotlight que puede faltar en partes del sistema de archivos o ser inexacta. Use find si requiere resultados confiables. Utilice mdfind cuando requiera velocidad sobre la precisión y cuando necesite términos de búsqueda complicados (por ejemplo, busque todos los archivos pdf que se crearon dentro de un rango de fechas específico y contienen una frase de texto).

    
respondido por el Abhi Beckert 05.06.2018 - 00:15

Lea otras preguntas en las etiquetas