find . -name "*.c"
正しいものを返し、実行ポイントからの完全な相対パス全体を含むすべてのファイルを一覧表示します (例):
./a/b/c/d/e/f/g/h/file.c
find . -name "*.c" > o
出力をファイルに出力すると、パスの先頭が「dump」という単語に置き換えられます (例):
./dump/g/h/file.c
理由はありますか?
find . -name "*.c"
正しいものを返し、実行ポイントからの完全な相対パス全体を含むすべてのファイルを一覧表示します (例):
./a/b/c/d/e/f/g/h/file.c
find . -name "*.c" > o
出力をファイルに出力すると、パスの先頭が「dump」という単語に置き換えられます (例):
./dump/g/h/file.c
理由はありますか?
検索は、現在のディレクトリからすべてのファイルを返しています。出力に含まれる現在のディレクトリにパターンに一致するファイルがあるか*.c
、stderr に「find: *.c: No such file or directory」というメッセージがあり、それについて私たちに知らせていません。
アップデート:
あなたの質問は今では異なります。あなたの新しい質問に答える:
find は、出力先によって動作が変わることはありません。これは、リダイレクト テストで異なる条件下で実行しているか、チェックしているファイルの出力が find からの実際の出力ではないことを意味します。