mac find -name *.png が機能しない

mac find -name *.png が機能しない

.png で終わるファイル名を再帰的に検索しようとしています。私の find コマンドは *.js では正常に機能しますが、*.png では機能しません。

~ >find dev -name *.png
~ >find dev -name bluerightarrow.png
dev/sandbox/ScheduleEditorTS/ScheduleEditorTS/img/bluerightarrow.png
~ >find dev -name *.js
dev/backup/ScheduleEditorTS/packages/jQuery.2.1.3/Content/Scripts/jquery-2.1.3-vsdoc.js
dev/backup/ScheduleEditorTS/packages/jQuery.2.1.3/Content/Scripts/jquery-2.1.3.js
... etc 

答え1

おそらく.png現在のディレクトリにファイルがあり、それが*シェルによって展開されます。

実際の手順を説明します。 というディレクトリを作成しtest、その中に という別のディレクトリを作成しsub、最後に に というファイルをmyfile.txt作成しますsub。次に にファイルcdを作成しますtest。これを行うためのコマンドは次のとおりです。

~ >mkdir -p test/sub
~ >touch test/sub/myfile.txt
~ >cd test

実行するfindと期待どおりの結果が得られます。

~/test >find sub -name *.txt
sub/myfile.txt

cause.txt次に、 inというファイルを作成しtestfind再度実行します。

~/test >touch cause.txt
~/test >find sub -name *.txt

今回はシェルが を展開するため何も見つからず*findコマンドは次のようになります。

~/test >find sub -name cause.txt

cause.txtにファイルがないのでsub、結果はありません。

この問題を回避するには、アスタリスクをバックスラッシュでエスケープする必要があります。

~/test >find sub -name \*.txt
sub/myfile.txt

関連情報