6 votos

Buscar la cadena exacta en el contenido del archivo desde la línea de comandos

¿Hay alguna manera de hacer que mdfind detecte una cadena exacta, digamos "lo que busco", en el contenido de los archivos? He probado todas las recetas (comillas dobles, comillas dobles escapadas, etc.) en vano. No me interesan los archivos que contienen alguna o todas estas palabras, sólo la cadena exacta. (EasyFind hace el trabajo.) Estoy usando MacOS Catalina con zsh.

1 votos

Super pregunta Chris - He añadido un montón de "aquí es por qué todo el mundo puede conseguir fácilmente este mal a mi respuesta" - hágamelo saber si usted necesita que se aclare / acortado o se preocupan por caso y la insensibilidad diacrítico o incluso las necesidades de búsqueda más específicos.

9voto

Oskar Puntos 1242

Spotlight lo permite y es mi herramienta favorita, a pesar de lo penoso que es aprender a hacerlo sólo con la documentación de Apple. La página man de mdfind es casi criminalmente negligente por no mencionar cómo buscar una cadena, pero no voy a despotricar mucho más sobre eso aquí.

mdfind 'kMDItemTextContent = "this exact string"'

Preste atención a las comillas dobles y a las comillas simples y también, cuando busque ayuda en línea - si el artículo menciona NSPredicate o que los focos utilizan dos idiomas diferentes, estás en lo bueno. Si el artículo dice "x no se puede hacer" considera que quizás "El autor no ha necesitado aprender a hacer x, todavía".

Aquí hay algunos lugares excelentes para empezar con los predicados - la página man del registro, excelentes referencias de programación como https://nshipster.com que pasa por alto lo difíciles que son las expresiones de búsqueda en "lenguaje natural", especialmente cuando se mezclan pcre/regex con el bagaje de SQL.

NSPredicate es una clase de Foundation que especifica cómo deben obtenerse o filtrarse los datos. Su lenguaje de consulta, que es como un cruce entre una cláusula WHERE de SQL y una expresión regular, proporciona una interfaz expresiva y de lenguaje natural para definir las condiciones lógicas en las que se busca una colección.

Básicamente, por razones El programa de la red de distribución puede ser muy difícil para los recién llegados, muy confuso sintácticamente, pero en su mayoría lo hace bien para algunas cosas fáciles y encontrar una cadena en un archivo es más desafiante de lo que se podría esperar. El sistema fue diseñado por los programadores y luego un segundo lenguaje fue parcheado en y hay una gran cantidad de información fácil de buscar que es simplemente errónea o incompleta.

0 votos

Los comentarios no son para ampliar la discusión; esta conversación ha sido trasladado al chat .

3voto

Podría ser más fácil utilizar herramientas dedicadas a la búsqueda de texto dentro de los archivos, por ejemplo grep (parte de MacOS) o ag ( brew install ag ):

fgrep -r "Text to match" PATH
ag -F "Text to match" PATH

0 votos

Fgrep no encontró lo que había escondido. ag no se instaló.

0 votos

@ChrisImpens ¿Cómo se oculta? Si tienes que buscar en .dot archivos puede ser necesaria una opción adicional. Para ag Ver la respuesta actualizada.

2 votos

"oculto": a la vista en un archivo txt. ag lo hizo bien en cuestión de segundos. fgrep se cuelga después de declarar 1 "permiso denegado".

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X