現在のディレクトリとそのサブディレクトリ内で一致するものを検索するのが難しいです。
実行すると、find *test.c
現在のディレクトリ内の一致のみが返されます。(サブディレクトリは検索されません)
試してみるとfind . -name *test.c
同じ結果が期待できますが、代わりにサブディレクトリ内の一致のみが返されます。作業ディレクトリ内に一致するはずのファイルがある場合は、次の結果が返されます。find: paths must precede expression: mytest.c
このエラーはどういう意味ですか? また、現在のディレクトリとそのサブディレクトリの両方から一致を取得するにはどうすればよいですか?
ベストアンサー1
引用符で囲んでみてください。シェルのワイルドカード拡張が実行されるので、実際に find に渡すものは次のようになります。
find . -name bobtest.c cattest.c snowtest.c
...構文エラーが発生します。代わりにこれを試してください:
find . -name '*test.c'
ファイル式の周囲に一重引用符があることに注意してください。これにより、シェル (bash) によるワイルドカードの展開が停止されます。