Rekursives Arbeiten im Dateisystem mittels Bash-Skript

Post Reply
Message
Author
User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

Rekursives Arbeiten im Dateisystem mittels Bash-Skript

#1 Post by Lateralus »

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?

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

#2 Post by hjb »

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 :-)

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#3 Post by jochen »

Code: Select all

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..."

User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

#4 Post by Lateralus »

@jochen
Yo, exakt das suchte ich.

@all
thx

Post Reply