Sie können dies allein mit grep tun (ohne find).
grep -riL "somestring" .
Dies ist die Erklärung der Parameter, die auf 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
verwenden Kleinschreibung erhalten Sie das Gegenteil (Dateien mit Übereinstimmungen)
-l, --files-with-matches
Only the names of files containing selected lines are written
Der von Ihnen zitierte Befehl macht ironischerweise genau das, was Sie beschreiben. Testen Sie es!
echo "hello" > a
echo "bye" > b
grep -iL BYE a b
Sagt nur ein.
Ich denke, Sie verwechseln vielleicht -L und -l
find . -print | xargs grep -iL "somestring"
ist die Umkehrung von
find . -print | xargs grep -il "somestring"
Übrigens, erwägen
find . -print0 | xargs -0 grep -iL "somestring"
Oder sogar
grep -IRiL "somestring" .