ein Job in vielen Verzeichnissen

Dieses Thema im Forum "Linux-Distributionen" wurde erstellt von it-praktikant, 21. Mai 2004.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. it-praktikant

    it-praktikant Megabyte

    Registriert seit:
    5. August 2002
    Beiträge:
    1.176
    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

    Registriert seit:
    4. Juni 2002
    Beiträge:
    1.952
    ey killerchen, /*/*/*/*/*/*/*/*/*/* is nix für dich :D :D
     
  3. it-praktikant

    it-praktikant Megabyte

    Registriert seit:
    5. August 2002
    Beiträge:
    1.176
    hast nix verpasst, mein [edit] war eigentlich nur ein [append].

    Ciao it.
     
  4. rapmaster

    rapmaster Halbes Gigabyte

    Registriert seit:
    21. Juli 2002
    Beiträge:
    5.181
    was hat er geschrieben?
    *hab ich was verpasst?*
     
  5. cirad

    cirad Kbyte

    Registriert seit:
    24. Februar 2001
    Beiträge:
    509
    Wieso Besserung, ich habe doch gar nichts kritisiert!? :)
     
  6. it-praktikant

    it-praktikant Megabyte

    Registriert seit:
    5. August 2002
    Beiträge:
    1.176
    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

    Registriert seit:
    24. Februar 2001
    Beiträge:
    509
    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

    Registriert seit:
    5. August 2002
    Beiträge:
    1.176
    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

    Registriert seit:
    24. Februar 2001
    Beiträge:
    509
    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

    Registriert seit:
    4. Juni 2002
    Beiträge:
    1.952
    --> durchdacht, gelöscht :D :bet:
     
  11. cirad

    cirad Kbyte

    Registriert seit:
    24. Februar 2001
    Beiträge:
    509
    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.
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen