GNU/Linux >> Tutoriales Linux >  >> Linux

Comando de Linux:¿Cómo 'buscar' solo archivos de texto?

Sé que este es un hilo antiguo, pero me topé con él y pensé en compartir mi método, que he descubierto que es una forma muy rápida de usar find para encontrar solo archivos no binarios:

find . -type f -exec grep -Iq . {} \; -print

El -I opción a grep le dice que ignore inmediatamente los archivos binarios y el . opción junto con el -q hará que coincida inmediatamente con los archivos de texto, por lo que va muy rápido. Puedes cambiar el -print a un -print0 para canalizar en un xargs -0 o algo si te preocupan los espacios (¡gracias por el consejo, @lucas.werkmeister!)

Además, el primer punto solo es necesario para ciertas versiones BSD de find como en OS X, pero no hace daño tenerlo allí todo el tiempo si quieres ponerlo en un alias o algo así.

EDITAR :Como @ruslan señaló correctamente, el -and se puede omitir ya que está implícito.


Basado en esta pregunta SO:

grep -rIl "needle text" my_folder


¿Por qué no es práctico? Si necesita usarlo con frecuencia y no quiere escribirlo cada vez, simplemente defina una función bash para él:

function findTextInAsciiFiles {
    # usage: findTextInAsciiFiles DIRECTORY NEEDLE_TEXT
    find "$1" -type f -exec grep -l "$2" {} \; -exec file {} \; | grep text
}

ponlo en tu .bashrc y luego simplemente ejecuta:

findTextInAsciiFiles your_folder "needle text"

cuando quieras.

EDITAR para reflejar la edición de OP:

si desea eliminar la información mímica, simplemente puede agregar una etapa adicional a la canalización que filtre la información mímica. Esto debería funcionar, tomando solo lo que viene antes de : :cut -d':' -f1 :

function findTextInAsciiFiles {
    # usage: findTextInAsciiFiles DIRECTORY NEEDLE_TEXT
    find "$1" -type f -exec grep -l "$2" {} \; -exec file {} \; | grep text | cut -d ':' -f1
}

Linux
  1. Cómo usar el comando grep de Linux

  2. Cómo cambiar el nombre de los archivos en Linux

  3. Cómo usar el comando Grep para buscar texto en archivos

  4. Cómo encontrar archivos con el comando fd en Linux

  5. Cómo encontrar texto específico usando GREP en Linux

Cómo excluir un directorio al buscar archivos en Linux

Cómo encontrar archivos con el comando fd en Linux

Cómo usar grep en Linux

Encuentra texto en archivos en Linux usando grep

Cómo usar más comandos en Linux para leer archivos de texto grandes

Cómo encontrar carpetas en Linux