「carrot」という単語を含むファイルの数を見つけて表示する必要があります(大文字と小文字を無視)。
これが私が今まで持っているものです。 "carrot"という単語を含むファイルがいくつかの個人を計算するためにここにwcを追加する方法がわかりません。
探す。 -exec grep -iにんじん{} \;
答え1
まず、他の人が言ったように使用する理由はありませんfind
。単に再帰を使用してくださいgrep
。
grep -irm 1 carrot . | wc -l
最初の一致後に各ファイルの検索を停止します-m 1
。grep
なければ数量を計算できません文書carrot
数量のみを含むワイヤー、同じファイルに複数のcarrot
。man grep
-r, --recursive
Read all files under each directory, recursively, following
symbolic links only if they are on the command line. This is
equivalent to the -d recurse option.
-i, --ignore-case
Ignore case distinctions in both the PATTERN and the input
files. (-i is specified by POSIX.)
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines.
本当に find にしたいなら、こうすればいいです。
find . -type f -exec grep -im 1 carrot {} \; | wc -l
ディレクトリが-type f
必要ないため、これを指定しました。grep
答え2
その単語を含むファイルの数を見つけるニンジン
number_of_files=`grep -l -r -i "carrot" . | wc -l`
パラメータの意味grep
:
-l, --files-with-matches
Only the names of files containing selected lines are written to standard output. grep will only search a file until a match has been found, making
searches potentially less expensive. Pathnames are listed once per file searched. If the standard input is searched, the string ``(standard
input)'' is written.
-R, -r, --recursive
Recursively search subdirectories listed.
-i : case insenstive
wc -l
:プログラムに入力として渡された行数を印刷します。私たちの場合、この行は入力パターンと一致するファイルの名前ですgrep
。
印刷物
echo $number_of_files
答え3
smRajソリューションのバリエーションは、grepを2回呼び出すことです。以下は同じ結果を提供しますgrep[など]|トイレ-l:
grep -l -r -i "carrot" . | grep -c .
次は、クエリを含むファイルの番号付きリストを印刷します。
grep -l -r -i "carrot" . | grep -n .