解釋兩個 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.在其輸出(當前目錄)中包含,因為它是一個目錄,且深度find小於.1 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

相關內容