通常、次のfind
ようなコマンドが表示されます。
$ find . -name foo.txt
現在のディレクトリから検索を開始する場合。私のマシン(Ubuntu、Cygwin)では、ドットなしで同じ結果が得られることがわかりました。
なぜ通常含まれているのですか?明示的にするのは単なる慣習ですか、それとも特定のシステムで必要だったのですか?
通常、次のfind
ようなコマンドが表示されます。
$ find . -name foo.txt
現在のディレクトリから検索を開始する場合。私のマシン(Ubuntu、Cygwin)では、ドットなしで同じ結果が得られることがわかりました。
なぜ通常含まれているのですか?明示的にするのは単なる慣習ですか、それとも特定のシステムで必要だったのですか?
回答:
の一部のバージョン*では、find
検索を開始するディレクトリであるパス引数を指定する必要があります。ドット.
は、通常、現在のディレクトリが単に検索したい場所であることを表します。
これを検索のベースにしたい任意のパスに置き換えることができます。findの一部のバージョンでは、パス引数が存在しない場合、現在のディレクトリが暗示されるため、これを残すことができます。
man find
引数の詳細については、シェルで実行できます。たとえば、使用法の概要、私は、パス引数がオプションであることを示しています(角括弧内[]
):
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
私を走らせたら find
引数なしでをすると、現在のフォルダーから始まるすべてのファイルとディレクトリが返されます。この例では、検索を開始する必要があることを明示的に示し、検索フィルターの1つとして.
式-name foo.txt
を含めています。
*特に、すべてのBSDバリアントと、POSIX標準に厳密に準拠しているもの。GNU findでは、オプションにすることができます。
path
は、findの必須引数であることに注意してください。
find dir1 dir2 dir3 -name foo.txt
。
たとえば、AIXバージョンのfindはパスを必要とし、パスが提供されない場合は実行されません。
# oslevel -s
5300-08-03-0831
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]
# oslevel -s
6100-03-01-0921
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]
一部のAIXマシンには、パスなしで対処できるGNU findがインストールされている場合がありますが、
# oslevel -s
6100-03-01-0921
# /opt/freeware/bin/find -version
GNU find version 4.1