Vous pouvez le faire avec grep seul (sans trouver).
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
minuscules vous obtiendrez le contraire (fichiers avec correspondances)
-l, --files-with-matches
Only the names of files containing selected lines are written
Ironiquement, la commande que vous citez 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 peut-être -L et -l
find . -print | xargs grep -iL "somestring"
est l'inverse de
find . -print | xargs grep -il "somestring"
Au fait, considérez
find . -print0 | xargs -0 grep -iL "somestring"
Ou même
grep -IRiL "somestring" .