我的目录结构为
- 文件夹1
- 文件夹2
- 文件夹2a
- 文件夹2b
- 文件夹3
- 文件夹3a
- 文件夹3b
- 文件夹2
我对以下命令的 xargs 输出感到困惑:
XXXXXX:folder1 user$ find . -type d -maxdepth 1 | xargs -I{} find {} -type d -maxdepth 1 | xargs -I{} echo {}
.
./folder2
./folder3
./folder2
./folder2/folder2b
./folder2/folder2a
./folder3
./folder3/folder3a
./folder3/folder3b
我正期待着
./folder2
./folder2/folder2b
./folder2/folder2a
./folder3
./folder3/folder3a
./folder3/folder3b
下面的开始输出是第一个 find 命令的输出吗?
.
./folder2
./folder3
我认为第一个 find 命令的输出作为参数传递给第二个 find 命令,不应该输出。输出的第一部分来自哪里?
答案1
find . -type d -maxdepth 1
将.
在其输出(当前目录)中包含,因为它是一个目录,并且深度小于 1。因此您将再次运行find
via .
,xargs
这就是获得额外输出的方式。您可能-mindepth 1
还需要第一个命令:
$ find . -maxdepth 1 -mindepth 1 -type d | xargs -I{} find {} -type d -maxdepth 1 | xargs -I{} echo {}
./folder2
./folder2/folder2b
./folder2/folder2a
./folder3
./folder3/folder3a
./folder3/folder3b