1 votos

bash: Búsqueda con ls

Hay un comando de bash que puede ser utilizado como centro de atención o una opción con ls que sólo imprime los archivos que contienen el texto? Quiero ser capaz de abrir el Terminal y escribir algo ls -SOMEOPTION filename y encontrar todos los archivos que tienen filename en su nombre, y que esta opción podría ser usado con -R y funcionaría como un reemplazo para el centro de atención.

5voto

Satanicpuppy Puntos 4902
 find . -type f -name "*filename*" -exec grep -il 'mywordinthefile' {} \;
  • find búsqueda de archivo de forma recursiva en un directorio.

  • Primeros parámetros es el directorio en el que desea buscar. Aquí es . por lo que el directorio actual. Usted podría utilizar ~/Documents , por ejemplo, o cualquier otro directorio.

  • -type f- opción es sólo para devolver los archivos, no de los directorios.

  • -name opción tiene un patrón para encontrar detalles de los nombres de archivo.

  • grep se utiliza aquí para encontrar la palabra que se desee en los archivos encontrados por find.

1voto

user36155 Puntos 36

Para encontrar todos los archivos que contengan una determinada cadena, puede utilizar grep en su propio:

grep -R /path/to/directory "myword"

En el ejemplo anterior, "myword" es lo que buscas, y /path/to/directory es el directorio en el que desea realizar la búsqueda. -R dice grep a ejecutar una búsqueda recursiva (es decir, para que se inicie en la ruta especificada, y van en cada subdirectorio en el que hay).

EDITAR

He re-leído tu pregunta y creo que usted está buscando cómo encontrar los archivos que tienen un determinado nombre de archivo. Para este uso:

find /path/to/directory -name "*glob*" -print

donde /path/to/directory es donde usted desea iniciar su búsqueda (y find se busque también en los subdirectorios) y "*glob*" es una completa o parcial de nombre de archivo que desea buscar. Por favor, tenga en cuenta que usted puede utilizar caracteres comodín (. y * para cualquier y cualquier múltiples personajes coinciden, respectivamente) en el globo. Como una variación a esto, se puede utilizar, como se propone por los demás:

find /path/to/directory -name "*glob*" -exec ls -la {} \;

en el anterior, lo que pone después de que la opción -exec es cualquier comando de UNIX con paramteres (en este caso, ls -la). El {} será sustituido por el nombre de archivo find encuentra, y el \; es una cadena de terminación.

EDIT 2

Tenga en cuenta, los comandos anteriores dará resultados similares a los del centro de atención, pero ellos no utilizan centro de atención en todo.

Si desea utilizar Spotlight desde la línea de comandos, puede utilizar mdfind comando, que es una interfaz de línea de comandos para el centro de atención. Escribir mdfind sobre su propio te dará una ayuda rápida para usar con un par de ejemplos. man mdfind le dará un manual más detallado.

Esencialmente mdfind toma una cadena de búsqueda (y modificadores opcionales) como argumento y es el mismo que el tipo es el centro de atención del campo de texto cuando se utiliza en una interfaz gráfica de usuario.

0voto

M K Puntos 8307

Para buscar archivos con una cadena específica en el nombre de archivo, uso

    find . -type f -name '*<filename>*' 2> /dev/null

Sustituto <filename> con la cadena que desea buscar en el nombre de archivo. La redirección al final es para evitar errores de impresión cuando ciertos archivos o carpetas no son accesibles.


Usted puede poner este comando en un script de shell, llamados decir, lsf que podría contener lo siguiente:

find . -type f -name "*$1*" 2> /dev/null

Después de hacerla ejecutable utilizando

chmod +x lsf

Usted puede también poner esto en su ~/.bashrc o ~/.bash_profile archivo en lugar de una secuencia de comandos de shell como se describió anteriormente (el comando es todavía llamado lsf aquí):

myls()
{
    find . -type f -name "*$1*" 2> /dev/null
}
alias lsf=myls

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