入れ子になったディレクトリコマンドがある場合は、find . -name "*.py" -print
現在のディレクトリにあるすべてのPythonスクリプトを取得します。ただし、find . -name *.py -print
現在のディレクトリのPythonスクリプトのみが返されます。
これが予想される動作ですか?この違いの原因は何ですか?私はMac OS X 10.7を使用しています。
答え1
これは同じコマンドではないかもしれません。echo
前に置いて確認してください。
$ echo find . -name "*.py" -print
find . -name *.py -print
$ echo find . -name *.py -print
find . -name foobar.py barfoo.py -print
引用符がない場合、シェルは拡張され、*.py
別のfind
引数を取得して別の結果が生成されます。
*
コマンドを文字通り読み取るには、常に引用符を使用する必要があります*
。それ以外の場合、動作は不規則になります(*.py
シェルが拡張するファイルがない限り、コマンドは機能します)。
答え2
パターンを保護しないと、シェルがワイルドカードを拡張するためです。
常に引用符を使用してください。