web-dev-qa-db-ja.com

Linuxでテキストを含まないテキストファイルを見つける方法

Linuxで何らかのテキストを含むファイルnotを見つけるにはどうすればよいですか?基本的に私は次の逆を探しています

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

皮肉なことに、あなたが引用したコマンドは、まさにあなたが説明したことを実行します。試して!

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

ただ言う。


-Lと-lを混同していると思います

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

isの逆

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

ちなみに、

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

あるいは

grep -IRiL "somestring" .
59
sehe

Grepだけで(検索なしで)実行できます。

grep -riL "somestring" .

これは、grepで使用されるパラメータの説明です

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

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

l小文字を使用すると、逆になります(一致するファイル)

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

「検索」を使用する場合、スクリプトはフォルダでも「grep」を実行します。

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

「grep」を直接使用します。

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

または、「検索」でオプション「-type f」を指定します。検索を使用しても、さらに時間をかけます(最初にファイルのリストを作成し、次にgrepを作成します)。

0
danilo