私が使用しているfindコマンドは、一致するパターンが参照されていない場合でも、すべての.logファイルを繰り返し一覧表示します。私が知る限り、検索パターンが引用されていない場合は、シェルによって拡張され、findコマンドが機能し、現在のディレクトリの.logファイルのみを提供する必要があります。
探す。 -iname *.log
ベストアンサー1
他のほとんどのPOSIXシェルは、globがファイルと一致しないときにエラーを報告せずに代わりにglobの縮小(拡張されていない)をアプリケーションに渡すので、おそらくこれらのシェルの1つを使用しています。隠しファイルbash
はありません。.log
現在のディレクトリに拡張子を含む)。
その樹皮の中であなたは見つけることができます
echo *.log
出力
*.log
次のエラーの代わりに:
zsh: no matches found: *.log`
fish: No matches for wildcard '*.log'. See `help expand`.
echo *.log
echo: No match.
.log
したがって、現在のディレクトリにファイルがない場合:
find . -name *.log
同じだろう
find . -name '*.log'
リテラル*.log
引数の1つがに渡されますfind
。
この問題を解決したシェルはzsh
、 、csh
最新tcsh
バージョンであるfish
(事実 Unix 以前のバージョンでは大丈夫だったが 1970 年代後半 Bourne シェルで壊れたが一部シェルで改修された)。 Passをbash
使用すると、shopt -s failglob
より良い行動を得ることができます。
.log
現在のディレクトリ(たとえば)にファイルがある場合は、次のようにfile.log
なります。
find . -name file.log
複数の場合(たとえば、file1.log
およびfile2.log
)は次のとおりです。
find . -name file1.log file2.log
これは誤った呼び出しになりますfind
。