查找工具末尾的“*”的含义

查找工具末尾的“*”的含义

最近,有人要求我检查为什么某些find命令会跳过隐藏文件夹,我发现问题出在路径末尾有通配符,如下所示:

find /path_to_folder/*

上面命令的输出仅显示常规文件和文件夹,跳过隐藏文件夹

但如果我们愿意的话

find /path_to_folder/

我们可以拥有所有文件和文件夹(包括隐藏的)。

有人可以帮助我理解这种行为或指出在哪里查看以获取更多详细信息吗?我尝试在手册中搜索find但没有得到明确的答案。

答案1

该实用程序采用一个或多个搜索路径。在使用诸如和 之find类的谓词指定进一步测试之前,这些是该实用程序的第一个参数。-name-type

当您使用 时find /path_to_folder/*,shell 会将通配模式扩展/path_to_folder/*到与其匹配的路径名列表。其中每一个都将由 进行搜索find*默认情况下,模式末尾的 不会扩展到隐藏名称。该find实用程序将遍历每个搜索路径并查找其下的所有名称,包括隐藏名称,但它不会搜索/path_to_folder自身,因为您没有为其提供该路径名。

当您使用 时find /path_to_folder/,您将指定find一个路径名作为搜索路径。该find实用程序将遍历/path_to_folder目录及其子目录,包括隐藏名称。在这种情况下,它将直接找到隐藏的名称,/path_to_folder因为您将此路径名指定为搜索路径。

概括:

  • /path_to_folder/*是一种通配模式,shell 将扩展为 下所有匹配的非隐藏名称的列表/path_to_folder。下面的这些名称/path_to_folder将用作find搜索路径,但列表不包括/path_to_folder其本身。

  • 使用/path_to_folder/作为单个路径名,find将搜索该目录并查找其中或之下的所有内容。

相关内容