find コマンドは原理を示します。目次

find コマンドは原理を示します。目次

findコマンドは時々現在のディレクトリ( . )をリストしますが、時々そうでない理由や根拠が何であるか疑問に思います。

「.」を使用すると、現在のディレクトリは外部ディレクトリに表示されますが、内部ディレクトリには表示されません。

$ pwd
/home/me/a

$ find . -exec echo  {} \;
.
./abc.txt
./a.txt
./d
./d/da.txt

特定のディレクトリを指定すると、現在のディレクトリを表示できません。

$ find /home/me/a  -exec echo  {} \;
/home/me/a
/home/me/a/abc.txt
/home/me/a/a.txt
/home/me/a/d
/home/me/a/d/da.txt

これがlsの見解です。

$ ls -lR
.:
total 4.0K
-rw-r--r--. 1 me    0 Oct 20 19:03 abc.txt
-rw-r--r--. 1 me    0 Oct 21 14:56 a.txt
drwxr-xr-x. 2 me 4.0K Oct 21 14:57 d/

./d:
total 0
-rw-r--r--. 1 me 0 Oct 21 14:57 da.txt

答え1

出力に表示される点は、まさにコマンドで指定したfind現在位置です。find .あなたが言うときも同じですfind /home/me/a。どちらの場合も、findは検索されているディレクトリ(指定どおり)とfindその場所で見つかった対応するファイルとディレクトリを表示します。

はい

私たちが探しているディレクトリは.

$ find . ....
.
./abc.txt
./a.txt

検索は、指定したパラメータ(たとえば)に基づいて結果を表示します.

私たちが探しているディレクトリは/home/me/a

$ find /home/me/a ....
/home/me/a
/home/me/a/abc.txt
/home/me/a/a.txt

find指定したパラメータに従って結果を再表示します/home/me/a

用語

規範を内部または外部の用語として考えるのではなく、むしろ相対的または絶対的なものと考えてください。比較的そうです.、もちろんです/home/me/a。どちらにしても構いませんfind。その場所で下方に見つかったディレクトリとファイルのみを表示します。

答え2

相対ディレクトリ()を使用すると、find .同じですが絶対的なwhileの期待される結果が得られます。絶対パスを使用すると、これらの現象が発生するとは予想されません。./abc.txtfind /home/ma/a/abc.txt.

.技術的に「検索と置換」が可能であり、その逆も可能であるため、結果は同じです/home/me/a

関連情報