0

[find] paths must precede expression が表示され、ワイルドカード検索が失敗する時の対処法

paths must precede expression

# find ./ -name acc*
find: paths must precede expression

というエラーメッセージになる。
もしくは何も表示されない事もある。

google翻訳

パスは、式の前に置く必要があります。

おかしな解釈をしてる。。。

これ、実は、シェルがワイルドカードを展開している為。
シェルがワイルドカードを展開してしまわないように、クオートで囲むか、エスケープ処理すればよい。

クオートで囲む

# find ./ -iname 'acc*'
./access_log-20131101.gz
./access_log-20131031.gz
./access_log-20131030.gz
./AcceSS_log
./access_log
./access_log-20131104.gz
./access_log-20131105
./access_log-20131102.gz
./access_log-20131103.gz

エスケープする

# find ./ -iname acc\*
./access_log-20131101.gz
./access_log-20131031.gz
./access_log-20131030.gz
./AcceSS_log
./access_log
./access_log-20131104.gz
./access_log-20131105
./access_log-20131102.gz
./access_log-20131103.gz

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です