查找命令和路径参数

查找命令和路径参数

具有如下文件结构:

/root/abc/1.txt
/root/abc/2.txt

并坐在/root目录中。

1.)为什么命令没有:

查找。-路径“abc/*.txt”

未返回任何结果

查找.-path“./abc/*.txt”

查找。-path“*/abc/*.txt”

做作品吗?

find . -path "./abc/*.txt" 2.)和有什么区别find . -path "*/abc/*.txt"

答案1

问题 1:

-path pattern参数与整个文件名匹配。

$ find
.
./abc
./abc/1.txt
./abc/2.txt

abc/*.txt如果没有前导 ,模式就不匹配./

问题2:

通配符可以匹配任意长度(包括和字符)*的任意字符串。该参数 有两个通配符,因此可以匹配以下任意内容:/.-path "*/abc/*.txt"

./abc/a.txt
*     *


./abc/ANYTHING.txt
*     ********

def/ghi/abc/SOMETHING.txt
*******     *********

./abc/def_dsa/faf.txt
*     ***********

答案2

下面这句话出自手册-path里的选项find

请注意,模式匹配测试适用于整个文件名,从命令行上命名的起点之一开始。

这解释了为什么您的替代搜索模式("./abc/*.txt""*/abc/*.txt")有效。您的原始搜索模式("abc/*.txt")仅在搜索根为以下情况时才有效abc

find abc/ -path "abc/*.txt"

至于"./abc/*.txt"和之间的区别"*/abc/*.txt",在调用之前,它们都不会尝试扩展字符串find:第一个只会在顶级目录中查找文件./abc/,但第二个会在 中查找文件任何子目录abc,例如./def/abc/、、./ghi/def/abc/等等,以及./abc/

相关内容