解释两个 find 命令的 xargs 输出

解释两个 find 命令的 xargs 输出

我的目录结构为

  • 文件夹1
    • 文件夹2
      • 文件夹2a
      • 文件夹2b
    • 文件夹3
      • 文件夹3a
      • 文件夹3b

我对以下命令的 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。因此您将再次运行findvia .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

相关内容