我想知道 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.txt
find /home/ma/a/abc.txt
.
结果是相同的,因为您可以在技术上“查找并替换” ,.
反之亦然/home/me/a
。