次のパスの空のディレクトリに移動するとします。/home/user/dir
私が実行すると、find . ! -name "*.txt"
結果は次のようになります。
.
しかし、実行すると、find /home/user/dir ! -name "*.txt"
何の結果も得られません。
findがこのように動作するのはなぜですか?どこに記載されていますか?
そして..
それを含めるとどうですか?
答え1
Findはディレクトリツリー検索中に見つかった.
項目を印刷しないでください。..
。とにかく彼らは役に立たない。最初から入れると.
本当に印刷になります。
これ探すユーティリティーは、以下で指定された各ファイルのディレクトリ階層を繰り返しダウンさせる必要があります。道、[...]階層で見つかった他のファイルへのすべてのパス名は、現在のパスオペランドa(現在のパスオペランドが1で終わらない場合)とパスオペランドに基づくファイル名の関連付けで構成されています。 。関連セクションには、点または点 - 点コンポーネントを含めないでください。、末尾の<slash>文字はなく、パス名コンポーネント間には1つの<slash>文字しかありません。
find ./foo
を使用して同様のパス名を見つけることができます。ここでは、現在のパスオペランドになり、途中に追加され、相対部分になります。./foo/bar/hello.txt
./foo
/
bar/hello.txt
find /home/user/dir ! -name "*.txt"
少なくともno match/home/user/dir
で印刷する必要があります。 (もちろん、名前で終わらない他のファイルも印刷する必要があります。)否定を使用しないと、条件と一致しないため印刷されません。dir
*.txt
.txt
find /home/user/dir -name "*.txt"
/home/user/dir