検索結果を得るためにgrepにパイプされたディレクトリがないのはなぜですか?

検索結果を得るためにgrepにパイプされたディレクトリがないのはなぜですか?

私の現在のディレクトリ:

pwd
/home/debian

-digから文字列を検索します/home/debian/mydoc/source

grep -lr -e "-dig" /home/debian/mydoc/source  
#get nothing as output

次のgrepに何も配管しても結果が出ないようです。

grep -lr -e "-dig" /home/debian/mydoc/source | xargs -d '\n' grep -lr -e "dns"
#my desired output:nothing ,none directory send to xargs

確認する:

grep -lr -e "-dig" /home/debian/mydoc/source | xargs -d '\n' grep -lr -e "dns"
/home/debian/.cache/google-chrome/Default/Cache/b2b96208dbb4fdff_0
/home/debian/.cache/google-chrome/Default/Cache/33f7b9aaf4e3cb37_0
/home/debian/.cache/google-chrome/Default/Cache/b7b3cae8052a94ea_0

実際の検索結果は私が想像したものとは異なりますgrep -lr -e "dns" /home/debian

grep -lr -e "dns" /home/debian
/home/debian/.cache/google-chrome/Default/Cache/b2b96208dbb4fdff_0
/home/debian/.cache/google-chrome/Default/Cache/33f7b9aaf4e3cb37_0
/home/debian/.cache/google-chrome/Default/Cache/b7b3cae8052a94ea_0

bashコマンドの根拠を教えてください。 - grep -lr -e "-dig" /home/debian/mydoc/source | xargs -d '\n' grep -lr -e "dns"

ベストアンサー1

最初の表現は間違いなく何も返さないので、2番目のgrepはxargsから空のargsリストを取得します。

2番目のgrepには-r(再帰)が含まれます。

man grepページから:

-r, --recursive:: ファイルオペランドが指定されない場合、grep は作業ディレクトリを検索します。

そのため、xargsが実行しているgrepは/home/debianに復元されます。

おすすめ記事