Bash-script zum automatischen erstellen symbolische Links auf Unterverzeichnisse in einer Baumstruktur
Ok, dies ist mein Dritter Versuch, dieses posting, vielleicht bin ich die falsche Frage gestellt!!
Es ist schon ein paar Jahre her, seit ich getan habe, jegliche shell-Programmierung, also bin ich ein wenig eingerostet...
Ich versuche zu schaffen, ein einfaches shell-Skript, das findet alle Unterverzeichnisse unter einem bestimmten Unterverzeichnis namens in einem Baum und erstellt symbolische links auf diese Verzeichnisse (klingt verwirrender als es ist). Ich bin mit cygwin auf Windows XP.
Diese find/grep findet die Verzeichnisse im Dateisystem wie ich es mir vorstelle:
find -mindepth 3 -maxdepth 3 -type d | grep "New Parts"
Jetzt kommt der schwierige Teil... ich will einfach nur nehmen Sie diese Liste, pipe es in ln und ein paar symlinks. Die Liste der Verzeichnisse, die hat ein paar Leerzeichen, so dass ich versuchte zu verwenden xargs, Dinge zu bereinigen ein bisschen:
find -mindepth 3 -maxdepth 3 -type d | grep "New Parts" | xargs -0 ln -s -t /cygdrive/c/Views
Leider, ln spuckt eine lange Liste all der Verzeichnisse, die miteinander verkettet (getrennt durch "\n") und spuckt eine "Dateiname zu lang" Fehler.
Ideen??
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie können dies tun, alle in Ihrem Befehl suchen. OTTOMH:
Hoffe ich erinnerte mich, dass die syntax Recht.
Ihren Befehl
haben-argument "-0" an xargs, aber Sie wollte nicht sagen, zu finden "-print0" (wenn Sie grep nicht funktionieren konnte, in das Rohr dazwischen). Was Sie wollen, ist die folgende ich denke:
Den
tr
Befehl konvertiert Zeilenumbrüche in ascii-null.-name
stattgrep
wie in NWCoder s Antwort und Sie können-print0
.Verwenden Sie eine for-Schleife.
Xargs hat Themen, bei denen die Eingabe aus der pipe geht an das Ende des Befehls. Was Sie wollen, ist mehrere Befehle, nicht nur 1 Befehl.
Meine Erfahrung mit, Dinge zu tun innerhalb der find-Befehl kann manchmal langsam sein, obwohl es den job zu erledigen.