GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Linux :Comment "trouver" uniquement des fichiers texte ?

Je sais que c'est un vieux fil, mais je suis tombé dessus et j'ai pensé partager ma méthode que j'ai trouvée être un moyen très rapide d'utiliser find pour rechercher uniquement les fichiers non binaires :

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

Le -I l'option grep lui dit d'ignorer immédiatement les fichiers binaires et le . option avec le -q le fera correspondre immédiatement aux fichiers texte, donc ça va très vite. Vous pouvez modifier le -print à un -print0 pour la tuyauterie dans un xargs -0 ou quelque chose si vous êtes préoccupé par les espaces (merci pour le tuyau, @lucas.werkmeister !)

De plus, le premier point n'est nécessaire que pour certaines versions BSD de find comme sur OS X, mais ça ne fait rien de l'avoir là tout le temps si vous voulez mettre ça dans un alias ou quelque chose comme ça.

MODIFIER :Comme @ruslan l'a correctement souligné, le -and peut être omis puisqu'il est sous-entendu.


Basé sur cette question SO :

grep -rIl "needle text" my_folder


Pourquoi c'est pas pratique ? Si vous avez besoin de l'utiliser souvent et que vous ne voulez pas le saisir à chaque fois, définissez simplement une fonction bash :

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

mettez-le dans votre .bashrc puis lancez :

findTextInAsciiFiles your_folder "needle text"

quand vous voulez.

MODIFIER pour refléter la modification d'OP :

si vous souhaitez supprimer les informations mime, vous pouvez simplement ajouter une étape supplémentaire au pipeline qui filtre les informations mime. Cela devrait faire l'affaire, en ne prenant que ce qui vient avant : :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. Comment utiliser la commande Linux grep

  2. Comment renommer des fichiers sous Linux

  3. Comment utiliser la commande Grep pour rechercher du texte dans des fichiers

  4. Comment rechercher des fichiers avec la commande fd sous Linux

  5. Comment rechercher un texte spécifique à l'aide de GREP sous Linux

Comment exclure un répertoire lors de la recherche de fichiers sous Linux

Comment rechercher des fichiers avec la commande fd sous Linux

Comment utiliser grep sous Linux

Rechercher du texte dans des fichiers sous Linux à l'aide de grep

Comment utiliser Plus de commandes sous Linux pour lire des fichiers texte volumineux

Comment trouver des dossiers sous Linux