Erläuterung der xargs-Ausgabe aus zwei Find-Befehlen

Erläuterung der xargs-Ausgabe aus zwei Find-Befehlen

Ich habe eine Verzeichnisstruktur von

  • Ordner1
    • Ordner2
      • Ordner2a
      • Ordner2b
    • Ordner3
      • Ordner3a
      • Ordner3b

Ich bin verwirrt von der xargs-Ausgabe des folgenden Befehls:

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

ich habe erwartet

./folder2
./folder2/folder2b
./folder2/folder2a
./folder3
./folder3/folder3a
./folder3/folder3b

Ist die Anfangsausgabe unten vom ersten Suchbefehl?

.
./folder2
./folder3

Ich dachte, die Ausgabe des ersten Find-Befehls wird als Parameter an den zweiten Find-Befehl weitergeleitet und sollte nicht ausgegeben werden. Woher kommt der erste Teil der Ausgabe?

Antwort1

find . -type d -maxdepth 1wird in seiner Ausgabe (das aktuelle Verzeichnis) haben ., da es ein Verzeichnis ist und es eine Tiefe von weniger als 1 hat. Sie werden also erneut via ausführen find, .wodurch xargsSie die zusätzliche Ausgabe erhalten. Sie möchten das wahrscheinlich -mindepth 1auch für den ersten Befehl:

$ 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

verwandte Informationen