¿Buscando Mac a través del terminal?


22

¿hay algún comando para buscar en tu Mac usando la terminal? Intenté usin grep para buscar, pero parece que no responde y no surge nada.

Por ejemplo, escribiría "grep Files" (un nombre de carpeta) y simplemente imprime una línea en blanco y no sucede nada.



Estoy interesado en buscar a través de todo tipo de archivos; No necesariamente excluye archivos de texto, pero no solo archivos de texto.
— JFW

Respuestas:


21

También puede usar el mdfindcomando para realizar una búsqueda con Spotlight. Más información aquí .

Úselo mdfind -name searchtermpara recuperar archivos con el nombre searchterm. Utilícelo mdfind searchtermpara realizar una búsqueda en el nombre y el contenido del archivo.


25

Si solo desea buscar archivos con un nombre determinado, use find

La página del manual se puede encontrar AQUÍ o escribiendo man finden el indicador del terminal.

Básicamente, find buscará de forma recursiva un archivo que cumpla con los criterios que especifique. El ejemplo más fácil:

find . -name file_name -print

Eso buscará un archivo llamado "nombre_archivo" comenzando en el directorio actual y buscando debajo e imprimirá los archivos con ese nombre.

find ~ -name ".DS_Store" -delete

Eso encontrará todos los archivos .DS_Store y los eliminará.

Puede buscar por nombre, expresiones regulares, fecha. Puede actuar sobre el archivo de cualquier manera Unix con el -execpredicado.

También puede usar find como el inicio de una canalización de acciones más compleja. Ejemplo:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

Encontrará todos los archivos con extensiones .m4a o .mp3

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

Le dará un recuento de esos archivos.


Si -printes el único predicado, puede omitirse; Además, hay un simple globbing disponible. Por lo tanto la búsqueda de todos los .txtarchivos bajo un directorio foose llevaría a cabo confind foo -name \\*.txt
— Norman gris

@yoshi: Eso es absolutamente falso. Escribir find .es recursivo desde el cwd. ¡Intenta escribir find .en tu directorio raíz!
— drewk

Mi mal podría jurar que no era recursivo, pero tal vez el servidor ha acuñado -shrug-
— nuala

5

Si desea buscar en una carpeta completa, simplemente use -r en grep:

grep -r pattern folder/to/search

Con find, también puedes usar xargs:

find folder/to/search -name '*.txt' | xargs grep pattern

o para asegurarse de buscar dos archivos a la vez y, por lo tanto, tener los nombres de archivo especificados:

find folder/to/search -name '*.txt' | xargs grep -n2 pattern

2

grepespera tanto un patrón como una especificación de archivo. Si falta uno, usa lo que se pasa como patrón y espera a que los datos busquen a través de la entrada estándar.

Si desea utilizar una especificación de archivo más compleja, utilice find.

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print

Básicamente, solo quiero que encuentre archivos que tengan el nombre que ingresé en el comando.
— JFW

En ese caso, no necesita usar el -execpredicado en find.
— Ignacio Vazquez-Abrams
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.