Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Rekursives Arbeiten im Dateisystem mittels Bash-Skript

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 08. Mai 2004 11:33   Titel: Rekursives Arbeiten im Dateisystem mittels Bash-Skript

Hi

Ich hätte gerne ein Skriptbeispiel oder -fragment, das aufzeigt, wie man einen Befehl in mehreren vorhandenen Verzeichnissen ausführen kann, die sich unter dem working directory befinden.

Läuft das darüber, dass man sich die Verzeichnisse anzeigen lässt, oder gibt es da eine bessere Möglichkeit?
 
Benutzer-Profile anzeigen Private Nachricht senden

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 08. Mai 2004 12:43   Titel:

Hi!

Da gibt es natürlich verschiedene Möglichkeiten. Eine der besseren ist es, Kommandos aufzurufen, die von selbst rekursiv arbeiten. Beispielsweise kann man find aufrufen und die Liste der Dateien per Pipe weiterreichen - an xargs, an eine eigene Shellfunktion usw.

Der Artikel Schleifen in der Shell vermeiden bzw. unser Shell-Workshop könnten dir weiterhelfen. Man muß nicht weiter gehen als bis zu Pro-Linux, um Antworten zu finden Smile

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

jochen
prolinux-forum-admin


Anmeldungsdatum: 14.01.2000
Beiträge: 699
Wohnort: Jülich

BeitragVerfasst am: 08. Mai 2004 12:45   Titel:

Code:
find . -type d -print | while read DIR ; do
    (
        cd $DIR
        tue_etwas
    )
done
find liefert Dir ab aktuellem Verzeichnis (find .) alle Unterdirectories (-type d) und gibt sie (-print) an die while-Schleife aus. In der wird pro gelesenem Verzeichnis (read DIR) in das Verzeichnis gewechselt und dort das Skript tue_etwas aufgerufen. Damit sich das working directory des Shellskriptes nicht ändert, ist der Schleifenkörper in runde Klammern gefasst. So wird der Schleifenkörper in einer Subshell ausgeführt, auf die dann das cd wirkt. Ausserhalb der runden Klammern gilt dann wieder das alte working directory.

War das so ungefähr das, was Du suchtest?

Jochen
_________________
Die grösste Lüge der EDV? "Mal eben..."
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 08. Mai 2004 13:05   Titel:

@jochen
Yo, exakt das suchte ich.

@all
thx
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy