GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Linux:Jak „najít“ pouze textové soubory?

Vím, že toto je staré vlákno, ale narazil jsem na něj a řekl jsem si, že se podělím o svou metodu, o které jsem zjistil, že je to velmi rychlý způsob použití find najít pouze nebinární soubory:

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

-I volba grep mu říká, že má okamžitě ignorovat binární soubory a . možnost spolu s -q bude okamžitě odpovídat textovým souborům, takže to jde velmi rychle. Můžete změnit -print na -print0 pro potrubí do xargs -0 nebo tak něco, pokud máte obavy o prostory (díky za tip, @lucas.werkmeister!)

Také první tečka je nutná pouze pro určité BSD verze find jako na OS X, ale ničemu neuškodí, když to tam chcete mít pořád, pokud to chcete vložit do aliasu nebo tak.

UPRAVIT :Jak @ruslan správně zdůraznil, -and lze vynechat, protože je implicitní.


Na základě této otázky SO :

grep -rIl "needle text" my_folder


Proč je to nešikovné? Pokud ji potřebujete používat často a nechcete ji pokaždé zadávat, definujte pro ni bash funkci:

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

vložte jej do vašeho .bashrc a pak stačí spustit:

findTextInAsciiFiles your_folder "needle text"

kdykoli budete chtít.

UPRAVIT aby odrážely úpravy OP:

pokud chcete vyjmout mime informace, můžete do potrubí přidat další fázi, která filtruje mime informace. To by mělo stačit, protože vezmete pouze to, co je před : :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. Jak používat Linuxový příkaz grep

  2. Jak najít soubory pomocí příkazu fd v Linuxu

  3. Jak najít konkrétní text pomocí GREP v systému Linux

  1. Jak přejmenovat soubory v Linuxu

  2. Jak používat příkaz Grep k vyhledání textu v souborech

  3. Jak v Linuxu najdu všechny soubory obsahující konkrétní text?

  1. Jak používat Linuxový příkaz find k hledání souborů

  2. Jak najít textové soubory, které neobsahují text v Linuxu?

  3. Jak najít soubory obsahující dva řetězce dohromady v Linuxu?