照会中のワイルドカード拡張の防止

照会中のワイルドカード拡張の防止

find以下が機能するようにコマンドでワイルドカード拡張を防ぐ方法はありますか?

find . -iname "foo [bar]"

指摘したとおりここset -f、私は以前に成功しなかったまま走ってみましたset -o noglobsetopt noglobfind

bash以下はUbuntu 10.04を使用するスクリプトです。

ワイルドカードを避けることができることを知っていますが、ワイルドカードを見逃すのではないかと心配です。

ベストアンサー1

find@ njsgがすでに述べたように、問題はシェルではなくシェルによって引き起こされます。使用する二重引用符は、すでに式をfind変更されていない状態に渡してシェルから保護します。

問題はfind主張をパターンで見る-nameことです-iname。これを抑制する唯一の方法は、find引数をパターンとして扱わないオプションを使用することです。しかし、find私のマニュアルページによれば、そのようなものがないので、あなたが望むことをすることはできません。あなたができる最も良いことは、括弧をに渡すときにうまく機能するようにスクリプトを強化することですfind。以下の興味深いsed置換がこれを行います。

echo "foo [bar]" | sed 's/[][]/\\&/g'

以下を印刷します。foo \[bar\]

おすすめ記事