GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Linux:come "trovare" solo file di testo?

So che questo è un vecchio thread, ma mi sono imbattuto in esso e ho pensato di condividere il mio metodo che ho trovato essere un modo molto veloce per usare find per trovare solo file non binari:

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

Il -I L'opzione di grep gli dice di ignorare immediatamente i file binari e il . opzione insieme al -q lo farà corrispondere immediatamente ai file di testo, quindi va molto veloce. Puoi cambiare il -print a un -print0 per il piping in un xargs -0 o qualcosa del genere se sei preoccupato per gli spazi (grazie per il suggerimento, @lucas.werkmeister!)

Anche il primo punto è necessario solo per alcune versioni BSD di find come su OS X, ma non fa male avere tutto il tempo lì se vuoi metterlo in un alias o qualcosa del genere.

MODIFICA :Come ha correttamente sottolineato @ruslan, il file -and può essere omesso poiché è implicito.


Sulla base di questa domanda SO :

grep -rIl "needle text" my_folder


Perché è poco pratico? Se hai bisogno di usarlo spesso e non vuoi digitarlo ogni volta, definisci semplicemente una funzione bash per questo:

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

inseriscilo nel tuo .bashrc e poi basta eseguire:

findTextInAsciiFiles your_folder "needle text"

quando vuoi.

MODIFICA per riflettere la modifica dell'OP:

se vuoi eliminare le informazioni mime, puoi semplicemente aggiungere un'ulteriore fase alla pipeline che filtra le informazioni mime. Questo dovrebbe risolvere il problema, prendendo solo ciò che viene prima di : :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. Come usare il comando Linux grep

  2. Come utilizzare il comando trova di Linux per trovare i file

  3. Come trovare file di testo che non contengono testo su Linux?

  4. Come trovo tutti i file contenenti testo specifico su Linux?

  5. Come trovare file contenenti due stringhe insieme in Linux?

Come escludere una directory durante la ricerca di file in Linux

Come trovare file con il comando fd in Linux

Come usare grep in Linux

Trova testo nei file su Linux usando grep

Come utilizzare più comandi in Linux per leggere file di testo di grandi dimensioni

Come trovare le cartelle in Linux