web-dev-qa-db-esp.com

Linux encuentra nombres de archivos con una cadena dada

Estoy en Ubuntu, y me gustaría encontrar todos los archivos en el directorio actual y los subdirectorios cuyo nombre contiene la cadena "John". Sé que grep puede hacer coincidir el contenido de los archivos, pero no tengo idea de cómo usarlo con los nombres de los archivos. Cualquier ayuda sería apreciada.

93
JJ Beck

Utilice el comando encontrar ,

find . -type f -name "*John*"
171
Rich Adams

Ya se ha proporcionado una respuesta correcta, pero para que aprenda a ayudarse a sí mismo, pensé que le daría algo útil de otra manera; Si puede resumir lo que está tratando de lograr en una sola palabra, hay una función de ayuda muy útil en Linux.

man -k <your search term>

Lo que hace es enumerar todos los comandos que tienen su término de búsqueda en la breve descripción. Por lo general, existe una buena posibilidad de que usted encuentre lo que está buscando. ;)

Esa salida a veces puede ser un tanto abrumadora, y recomiendo limitarla a los ejecutables, en lugar de a todas las páginas de manual disponibles, por ejemplo:

man -k find | egrep '\(1\)'

o, si también desea buscar comandos que requieran niveles de privilegios más altos, como este:

man -k find | egrep '\([18]\)'
22
tink

El comando find llevará mucho tiempo porque escanea archivos reales en el sistema de archivos.

La forma más rápida es usar el comando locate, que dará resultados de inmediato:

locate "John"

Si no se encuentra el comando, debe instalar el paquete mlocate y ejecutar el comando updatedb primero para preparar la base de datos de búsqueda por primera vez.

Más detalles aquí: https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab

2
thucnguyen

usar ack es simple solo escribe ack <string to be searched>

1
Annu

Esta es una solución muy simple usando el comando tree en el directorio que desea buscar. -f muestra la ruta completa del archivo y | se usa para canalizar la salida del árbol a grep para encontrar el archivo que contiene la cadena filename en el nombre.

tree -f | grep filename
1
caylus