OSXでgrep --exclude-dirを使用する

OSXでgrep --exclude-dirを使用する

「デフォルトの対話型シェル」というテキストを含むファイルを見つけようとしています。次のgrepコマンドを使用して検索します。

grep -r --exclude-dir='/{var,Volumes,bin,cores,dev,sbin,tmp,usr}' "The default interactive shell" /

ただし、/usr次のエラー メッセージに示すように、まだ検索します。

grep: /usr/bin/sudo: Permission denied

複数のオプションを作成せずに再帰的なgrepを実行し、複数のディレクトリを除外する方法は--exclude-dir?システムはOSX 10.15.4です。

ベストアンサー1

リテラル名を持つディレクトリを除いています/{var,Volumes,bin,cores,dev,sbin,tmp,usr}。これは一重引用符が原因で発生します。中かっこ拡張が引用されると、もはや中括弧拡張ではなくプレーンテキストになります。

中かっこを正しく拡張するには、引用符を削除します。

grep -R --exclude-dir=/{var,Volumes,bin,cores,dev,sbin,tmp,usr} \
    -F 'The default interactive shell' /

-F正規表現ではなく文字列を使用して検索するため、追加しました。

おすすめ記事