it-swarm.com.de

Wie finde ich unter Linux Textdateien, die keinen Text enthalten?

Wie finde ich Dateien nicht , die Text enthalten, unter Linux? Grundsätzlich suche ich die Umkehrung der folgenden

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

Der Befehl, den Sie zitieren, tut ironischerweise genau das, was Sie beschreiben. Testen Sie es!

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

Sagt nur.


Ich denke, Sie können -L und -l verwirrend sein

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

ist die Umkehrung von

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

Übrigens bedenken Sie

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

Oder auch

grep -IRiL "somestring" .
55
sehe

Du kannst es mit grep alleine machen (ohne zu finden).

grep -riL "somestring" .

Dies ist die Erklärung der Parameter, die für grep verwendet werden.

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

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

Wenn Sie l Kleinbuchstaben verwenden, erhalten Sie das Gegenteil (Dateien mit Übereinstimmungen)

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

Wenn Sie "find" das Skript verwenden, tun Sie "grep" auch im Ordner:

[[email protected] test]# find  | xargs grep -Li 1234
grep: .: Is a directory
.
./test.txt
./test2.txt
[[email protected] test]#

Verwenden Sie das "grep" direkt:

# grep -Li 1234 /root/test/*
/root/test/test2.txt
/root/test/test.txt
[[email protected] test]#

oder spezifizieren Sie in "find" die Optionen "-type f" ... selbst wenn Sie den find verwenden, setzen Sie mehr Zeit (zuerst die Liste der Dateien und dann den grep).

0
danilo