Ich habe eine Verzeichnisstruktur von
- Ordner1
- Ordner2
- Ordner2a
- Ordner2b
- Ordner3
- Ordner3a
- Ordner3b
- Ordner2
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 1
wird 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 xargs
Sie die zusätzliche Ausgabe erhalten. Sie möchten das wahrscheinlich -mindepth 1
auch 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