2009-03-14 11 views

答えて

5

なぜ_ *を引用する必要がありますか?

もしそうでなければ、*を現在のディレクトリのファイルに置き換えて展開するかもしれません。それはおそらくあなたがここで望んでいたものではありません。

+0

右、 findコマンドは* glob演算子を展開するためです。 – ashawley

+0

問題は、findコマンドを実行する前にシェルが展開するということです。私がfindを使うと – Javier

9

まず、シェルは、引用符で囲まれていないすべての*をローカルディレクトリのファイル名と一致するように展開します。

その後、シェルはfindコマンドをそのファイル名のリストで実行します。

一般的に、シェルはローカルディレクトリで '*'グロブを実行したくありません。一般に、他のディレクトリでファイル名の照合を行うにはfindコマンドを使用します。

シェルにはコマンドを実行する前にいくつかのことがあります。 $ VARIABLE置換はそれらの1つです。

2

引用しないと、シェル(bash?)が展開しようとします。あなたが欲しいもの

find . \(-name _somefile _someother _file3 .... -or -newer while2 \) -type f -print 
確か

ない:カレントディレクトリの「_」で始まるすべてのファイルが含まれていた場合、あなたのような何かを得ると思います。私はいつもパターンを引用します。シェルがそれらを混乱させないようにしてください。

+0

です。 -name c *は、findよりも一致するものが少ないことを示します。 -name "c *"どうして? – MainID

+0

おそらく、cで始まる単一ファイルがあり、findコマンドは、cで始まる別の名前ではなく、まったく同じ名前のすべてのファイルを取得します – Javier