- 環境
- macOS Mojave バージョン10.14.5
- grep (BSD grep) 2.5.1-FreeBSD
事象 : grepコマンドを使ったらなんか言われた
現在地のディレクトリにあるファイルからgrepしたかった。
warningだが、grepの結果が返ってこない・・・
他のところで使っているgrepと同じように使ってしょっちゅう間違えるのでメモ
$ cd {ファイルがあるディレクトリ}
$ grep -irl {探したい文字}
grep: warning: recursive search of stdin
原因 : grep対象のファイルやディレクトリを指定していないから(かもしれない)
mac標準のgrepはなぜかエラーが出るので、brew install grepしてみた - Qiitaの投稿を見て自分と共通点が2つあるのに気がついた。
-
-r
を使っている - 対象のファイルやディレクトリを指定していない
なので試してみる。
$ man grep
# 抜粋
-R, -r, --recursive
Recursively search subdirectories listed.
# -rを-Rにしてみたけど結果は同じだった
$ grep -iRl {探したい文字}
grep: warning: recursive search of stdin
# -rを使わないとメッセージは出力されないけどgrepの結果が返ってこない・・・
$ grep -il {探したい文字}
# ディレクトリを指定してみるとうまくいった
$ grep -ril {探したい文字} .
./hoge.md
./.git/index
./fuga.md
./ponsuke.md
対応方法 : 対象のファイルやディレクトリを指定する
# これは見づらい
$ grep -ril {探したい文字} ./
.//hoge.md
.//.git/index
.//fuga.md
.//ponsuke.md
# こうすれば隠しファイル的なものは外される
$ grep -ril {探したい文字} ./*
./hoge.md
./fuga.md
./ponsuke.md
# ファイルを指定した場合 : ファイルの場合は-rlはあんまいらない
$ grep -ril {探したい文字} ponsuke.md
ponsuke.md