GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Befehl:Wie findet man nur Textdateien?

Ich weiß, dass dies ein alter Thread ist, aber ich bin darüber gestolpert und dachte, ich würde meine Methode teilen, die ich als eine sehr schnelle Möglichkeit gefunden habe, find zu verwenden um nur nicht-binäre Dateien zu finden:

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

Die -I Option zu grep weist es an, Binärdateien und den . sofort zu ignorieren Option zusammen mit -q wird es sofort Textdateien zuordnen, so dass es sehr schnell geht. Sie können den -print ändern zu einem -print0 zum Anschluss an einen xargs -0 oder etwas, wenn Sie sich Sorgen um Leerzeichen machen (danke für den Tipp, @lucas.werkmeister!)

Außerdem ist der erste Punkt nur für bestimmte BSD-Versionen von find erforderlich wie unter OS X, aber es schadet nichts, wenn Sie es die ganze Zeit dort haben, wenn Sie dies in einen Alias ​​​​oder so etwas einfügen möchten.

BEARBEITEN :Wie @ruslan richtig betonte, der -and kann weggelassen werden, da es impliziert ist.


Basierend auf dieser SO-Frage:

grep -rIl "needle text" my_folder


Warum ist es unhandlich? Wenn Sie es häufig verwenden müssen und es nicht jedes Mal eingeben möchten, definieren Sie einfach eine Bash-Funktion dafür:

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

legen Sie es in Ihren .bashrc und dann einfach ausführen:

findTextInAsciiFiles your_folder "needle text"

wann immer Sie wollen.

BEARBEITEN um die Bearbeitung von OP widerzuspiegeln:

Wenn Sie Mime-Informationen ausschneiden möchten, können Sie der Pipeline einfach eine weitere Stufe hinzufügen, die Mime-Informationen herausfiltert. Dies sollte funktionieren, indem nur das genommen wird, was vor : steht :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. So verwenden Sie den Linux-Grep-Befehl

  2. So benennen Sie Dateien unter Linux um

  3. So verwenden Sie den Grep-Befehl, um Text in Dateien zu finden

  4. So finden Sie bestimmten Text mit GREP unter Linux

  5. Wie finde ich unter Linux Dateien, die zwei Zeichenfolgen zusammen enthalten?

So schließen Sie ein Verzeichnis beim Suchen von Dateien in Linux aus

So finden Sie Dateien mit dem fd-Befehl in Linux

So verwenden Sie grep unter Linux

Finden Sie Text in Dateien unter Linux mit grep

So verwenden Sie den More-Befehl in Linux, um große Textdateien zu lesen

So finden Sie Ordner in Linux