通常,人们看到的find
命令如下所示:
$ find . -name foo.txt
当搜索从当前目录开始时。我发现在我的机器(Ubuntu、Cygwin)上我得到了相同的结果,但没有点。
为什么它通常被包括在内?这只是一个明确的约定,还是某些系统需要它?
答案1
某些版本*find
要求您提供路径参数,该参数是开始搜索的目录。点.
仅代表当前目录,通常是您要搜索的位置。
您可以将其替换为您想要作为搜索基础的任何路径。在 find 的某些版本中,可以保留此选项,因为如果不存在路径参数,则隐含当前目录。
您可以man find
在 shell 中运行以获取有关参数的详细信息。例如用法概要对于我的表示路径参数是可选的(在方括号内[]
):
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
如果您find
在不带任何参数的情况下运行 my,则将返回从当前文件夹开始的所有文件和目录。您的示例只是明确指出搜索应从.
表达式开始并包含-name foo.txt
作为搜索过滤器之一。
答案2
例如,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