我试图了解如何使用find -maxdepth 0选项。
我有以下目录结构。
--> file1
--> parent
--> child1
--> file1
--> file2
--> child2
--> file1
--> file2
--> file1
Run Code Online (Sandbox Code Playgroud)
现在,我执行我的find命令如下。
find ./parent -maxdepth 0 -name "file1"
find ./ -maxdepth 0 -name "file1"
find . -maxdepth 0 -name "file1"
Run Code Online (Sandbox Code Playgroud)
没有上述find命令,file1被返回。
从 的手册页find,我看到以下信息。
-maxdepth 0 表示仅将测试和操作应用于命令行参数。
我搜索了一些带有-maxdepth 0选项的示例,但找不到任何合适的示例。
我的find版本是
find --version
find (GNU findutils) 4.4.2
Run Code Online (Sandbox Code Playgroud)
有人可以向我提供一些关于哪些案例-maxdepth 0选项有用的指示吗?
编辑
当我执行以下命令时,我将file1列出两次。这是打算以这种方式工作吗?
find . file1 -maxdepth 1 -name "file1"
./file1
file1
Run Code Online (Sandbox Code Playgroud)
Joh*_*024 32
让我们假设我们file1在当前目录中有。然后:
$ find . -maxdepth 0 -name "file1"
$ find . file1 -maxdepth 0 -name "file1"
file1
Run Code Online (Sandbox Code Playgroud)
现在,让我们看看文档说明了什么:
-maxdepth 0意味着仅将测试和操作应用于命令行参数。
在我上面的第一个示例中,.命令行中只列出了目录。由于.没有 name file1,输出中没有列出任何内容。在我上面的第二个示例中,.和 file1都列在命令行中,并且由于file1匹配-name "file1",它在输出中返回。
换句话说,-maxdepth 0意味着不搜索目录或子目录。相反,只在命令行上明确列出的文件中查找匹配的文件。
在您的示例中,命令行中仅列出了目录,并且没有一个目录被命名为file1. 因此,没有输出。
一般来说,很多文件和目录都可以在命令行上命名。例如,这里我们find在命令行上尝试使用九个文件和目录的命令:
$ ls
d1 file1 file10 file2 file3 file4 file5 file6 file7
$ find d1 file1 file10 file2 file3 file4 file5 file6 file7 -maxdepth 0 -name "file1"
file1
Run Code Online (Sandbox Code Playgroud)
考虑:
$ find . file1 -maxdepth 0 -iname file1
file1
$ find . file1 file1 -maxdepth 0 -iname file1
file1
file1
$ find . file1 file1 -maxdepth 1 -iname file1
./file1
file1
file1
Run Code Online (Sandbox Code Playgroud)
find将遵循命令行上指定的每个路径并查找匹配项,即使这些路径指向相同的文件(如 ). file,或者即使路径完全重复(如file1 file1.
| 归档时间: |
|
| 查看次数: |
82240 次 |
| 最近记录: |