1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

ein Job in vielen Verzeichnissen

Discussion in 'Linux-Distributionen' started by it-praktikant, May 21, 2004.

Thread Status:
Not open for further replies.
  1. it-praktikant

    it-praktikant Megabyte

    Hallo,

    ich habe in einem Verzeichnis viele Unterverzeichnisse, etwa 33. Nun will ich in jedem dieser Unterverzeichnisse eine Befehleszeile ausführen, die immer funktionieren wird.

    Ich habe das jetzt mit 5 Unterverzeichnissen, aber das ist ja eine furchtbare Aufgabe.

    Es gibt doch sicherlich irgendeine bash-Funktion, die das mit den Unterverzeichnissen symbolisiert.

    Oder anders gefragt, wie mache ich das möglichst in einer Komandozeile?


    Ciao it.
     
  2. bitumen

    bitumen Megabyte

    ey killerchen, /*/*/*/*/*/*/*/*/*/* is nix für dich :D :D
     
  3. it-praktikant

    it-praktikant Megabyte

    hast nix verpasst, mein [edit] war eigentlich nur ein [append].

    Ciao it.
     
  4. rapmaster

    rapmaster Halbes Gigabyte

    was hat er geschrieben?
    *hab ich was verpasst?*
     
  5. cirad

    cirad Kbyte

    Wieso Besserung, ich habe doch gar nichts kritisiert!? :)
     
  6. it-praktikant

    it-praktikant Megabyte

    ich gelobe Besserung!

    Danke, ciao it.



    [edit]
    Wen es interessiert:
    aus 291 MB wurden nach 'make clean' 130 MB und nach 'tar cfj' wurden daraus 21 MB.
     
  7. cirad

    cirad Kbyte

    Du kannst es auch ohne xargs schreiben, wenn es dann für dich einfacher wird. xargs ist so eine Angewohnheit von mir, da recht nützlich und mächtig, besonders in Kombination mit find (daher durchaus Wert, verstanden zu werden :)). Aber für den Fall -n1 geht es auch direkt mit find:
    find /usr/local/src -type d -mindepth 1 -maxdepth 1 -exec sh -c 'cd "$0"; make clean' {} \;

    Obiges sollte man ruhig verstehen, ist immer nützlich und dort könntest du bspw. auch noch tar einbauen. Speziell in deinem Fall (ohne tar) ist es allerdings noch einfacher:
    find /usr/local/src -type d -mindepth 1 -maxdepth 1 -exec make -C {} clean \;

    Wie du siehst, wäre es ganz nützlich gewesen, deinen Fall bereits am Anfang des Threads zu wissen. Erstens vereinfacht es einiges und zweitens kommen Details wie -maxdepth 1 hinzu. Also ruhig immer mitposten.
     
  8. it-praktikant

    it-praktikant Megabyte

    man, jetzt wird's ja kompliziert, dabei wollte ich in meinem /usr/local/src aufräumen.

    Bei jedem programm einfach 'make clean' eintippen. und das Ganze dan per 'tar cfj' BZippen.

    Einzig und alleine sollte in jedem Unterverzeichnis von /usr/local/src 'make clear' aufgerufen werden. Was nun die letzte Zeile dort bei dir cirad bedeuten soll, erschließt sich mir nicht!.

    Gute Nacht.
    Ciao it.
     
  9. cirad

    cirad Kbyte

    Nagut, dann habe ich meins auch nochmal überdacht. (:

    Wenn man befehl keine Parameter übergeben kann, sondern einfach nur befehl im jeweiligen Subverzeichnis ausführen möchte, dann sollte man noch zu xargs greifen:

    find dir -mindepth 1 -type d -print0 | xargs -0 -n1 sh -c 'cd "$0"; befehl'
     
  10. bitumen

    bitumen Megabyte

    --> durchdacht, gelöscht :D :bet:
     
  11. cirad

    cirad Kbyte

    find dir -mindepth 1 -type d -exec befehl {} \;
    dir ist dein Verzeichnis, {} wird durch die jeweiligen Subverzeichnisse ersetzt. Jeweils immer einzeln, also befehl sub1, befehl sub2, etc.

    EDIT:
    @bitumen:
    Du machst mir Angst.
     
Thread Status:
Not open for further replies.

Share This Page