44 votes

Comment trouver des fichiers texte ne contenant pas de texte sous Linux ?

Comment trouver des fichiers pas contenant du texte sur Linux ? En gros, je cherche l'inverse de ce qui suit

find . -print | xargs grep -iL "somestring"

68voto

sehe Points 123151

La commande que vous citez, ironiquement, fait exactement ce que vous décrivez. Testez-la !

echo "hello" > a
echo "bye" > b
grep -iL BYE a b

Dit un seul.


Je pense que vous confondez -L et -l.

find . -print | xargs grep -iL "somestring"

est l'inverse de

find . -print | xargs grep -il "somestring"

À propos, considérez

find . -print0 | xargs -0 grep -iL "somestring"

Ou même

grep -IRiL "somestring" .

5voto

Adrian Points 466

Vous pouvez le faire avec grep seul (sans find).

grep -riL "somestring" .

Voici l'explication des paramètres utilisés sur grep

     -L, --files-without-match
             each file processed.
     -R, -r, --recursive
             Recursively search subdirectories listed.

     -i, --ignore-case
             Perform case insensitive matching.

Si vous utilisez l en minuscules, vous obtiendrez le contraire (fichiers avec correspondances)

     -l, --files-with-matches
             Only the names of files containing selected lines are written

0voto

danilo Points 109

Si vous utilisez "find" le script faites "grep" aussi dans le dossier :

[root@vps test]# find  | xargs grep -Li 1234
grep: .: Is a directory
.
./test.txt
./test2.txt
[root@vps test]#

Utilisez directement le "grep" :

# grep -Li 1234 /root/test/*
/root/test/test2.txt
/root/test/test.txt
[root@vps test]#

ou spécifier dans "find" les options "-type f"...même si vous utilisez le find vous mettrez plus de temps (d'abord la liste des fichiers et ensuite faire le grep).

0voto

Rod Terry Points 161

Trouvez le fichier de démarque à l'aide de find et grep pour trouver la non-concordance.

$ find. -name '* .md' -print0 | xargs -0 grep -iL "title"

Utiliser directement la fonction grep -L pour rechercher des fichiers qui ne contiennent que des fichiers markdown et aucun titre

$ grep -iL "title" -r ./* --include '* .md'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X