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

Find 根据您指定的参数(即 )显示结果.

我们正在查找的目录是/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

使用相对目录(the )会产生whilefind .的预期结果是相同但绝对的。您不会期望在使用绝对路径时看到。./abc.txtfind /home/ma/a/abc.txt.

结果是相同的,因为您可以在技术上“查找并替换” ,.反之亦然/home/me/a

相关内容