Bash

解釋兩個 find 命令的 xargs 輸出

  • June 6, 2019

我有一個目錄結構

  • 文件夾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 並且不應該輸出。輸出的第一部分來自哪裡?

find . -type d -maxdepth 1.在其輸出(目前目錄)中,因為它是一個目錄,並且它的深度小於 1。因此您將再次通過執行find,這就是您獲得額外輸出的方式。您可能還想要第一個命令:.``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

引用自:https://unix.stackexchange.com/questions/523192