¿Cómo buscaría en todos los archivos .java una cadena simple (no una expresión regular) en el directorio actual y todos los subdirectorios en Mac OS X? Solo quiero imprimir una lista de nombres de archivos y directorios que coincidan.
12
Respuestas:
Y el siempre popular
EDITAR (por Frank Szczerba):
Si se trata de nombres de archivos o directorios que tienen espacios, la forma más segura de hacerlo es:
Siempre hay más de una forma de hacerlo.
fuente
mdfind
es una manera más OSXy de hacer esto !La respuesta tradicional de UNIX sería la que fue aceptada para esta pregunta:
Esto probablemente funcionará para archivos Java, pero los espacios en los nombres de archivos son mucho más comunes en Mac que en el mundo tradicional de UNIX. Cuando los nombres de archivo con espacios se pasan a través de la tubería anterior, xargs interpretará las palabras individuales como nombres diferentes.
Lo que realmente quieres es separar nul los nombres para que los límites no sean ambiguos:
La alternativa es dejar que find ejecute grep por usted, como sugiere Mark, aunque ese enfoque es más lento si está buscando una gran cantidad de archivos (ya que grep se invoca una vez por archivo en lugar de una vez con la lista completa de archivos).
fuente
Use el grep que es mejor que grep, ack :
fuente
En realidad, esto usará una expresión regular si lo desea, simplemente manténgase alejado de los metacaracteres o escape de ellos, y puede buscar cadenas.
fuente
fuente
Dado que esta es una pregunta de OSX, aquí hay una respuesta más específica de OSX.
Saltar
find
y usarSpotlight
desde la línea de comando. Mucho más poderoso!FOCO DE LA LÍNEA DE MANDO - ENCUENTRE CON GREP
fuente
Prueba esto:
fuente
También podría usar un programa GUI como TextWrangler para hacer una búsqueda más intuitiva de dónde están las opciones en la interfaz.
fuente
Si desea ignorar mayúsculas y minúsculas, reemplace -rl con -irl. (su cadena) también puede ser una expresión regular si alguna vez ve la necesidad.
fuente