Datei zeilenweise in einem Bash Script verarbeiten
Hallo, ich möchte in einem Verzeichnis rekursiv alle Unterverzeichnisse in einer Liste speichern. Anschließend möchte ich diese Liste "abarbeiten", in dem ich in jedes Unterverzeichnis wechsel und dort entsprechende Befehle ausführe. Als Ansatz habe ich folgendes Bash Script, was mir aber bei der Zeile: cd $_DIR fogenden Fehler bring: "Zugriff auf ... nicht möglich: Datei oder Verzeichnis nicht gefunden"
Ich finde den Fehler nicht, die Verzeichnisse existieren. Manuell geht es auch mit cd /gehe/in/das/entsprechende/verzeichnis
Vielen Dank, schonmal.
[code]
#!/bin/bash
#! Verzeichnisliste erzeugen
find -type d | cut -c 2-512 > $DIRLIST
#! Verzeichnisliste zeilenweise einlesen
for _DIR in `$DIRLIST` ; do
#! In das Aktuelle Verzeichniss gehen
cd $_DIR
#! ... hier werden weiter Befehle im Aktuellen Verzeichnis ausgeführt
cd ~/zuruck/zum/script
done
[/code]
Ich finde den Fehler nicht, die Verzeichnisse existieren. Manuell geht es auch mit cd /gehe/in/das/entsprechende/verzeichnis
Vielen Dank, schonmal.
[code]
#!/bin/bash
#! Verzeichnisliste erzeugen
find -type d | cut -c 2-512 > $DIRLIST
#! Verzeichnisliste zeilenweise einlesen
for _DIR in `$DIRLIST` ; do
#! In das Aktuelle Verzeichniss gehen
cd $_DIR
#! ... hier werden weiter Befehle im Aktuellen Verzeichnis ausgeführt
cd ~/zuruck/zum/script
done
[/code]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 85351
Url: https://administrator.de/contentid/85351
Ausgedruckt am: 26.11.2024 um 10:11 Uhr
4 Kommentare
Neuester Kommentar
Moin risc2000,
ich weiß ja nicht genau, welches *nix-Derivat Du missbrauchst und kann auch nich ganz eindeutig den Plan erkennen.
Und ich denke, der bash geht es genauso.
IMHO ist das Problem, dass die Shell nicht so genau weiß, ob Du mit $DIRLIST eine Variable oder eine Datei meinst.
Bei mir (Solaris-Büchse) sagt sie das auch bei Deinem Schnipsel:
Ich würde es so umbauen ( 2 Beispiele mit einer Hilfdatei, eines ohne Datei):
Anmerkung: Variablennamen wie $_DIR finde ich absolut verwegen.
Und Dateinamen wie $DIRLIST (falls es einer sein sollte) auch.
Grüße
Biber
ich weiß ja nicht genau, welches *nix-Derivat Du missbrauchst und kann auch nich ganz eindeutig den Plan erkennen.
Und ich denke, der bash geht es genauso.
IMHO ist das Problem, dass die Shell nicht so genau weiß, ob Du mit $DIRLIST eine Variable oder eine Datei meinst.
Bei mir (Solaris-Büchse) sagt sie das auch bei Deinem Schnipsel:
./forsubdirs: line 2: $DIRLIST: ambiguous redirect
./forsubdirs: line 9: $DIRLIST: ambiguous redirect
Ich würde es so umbauen ( 2 Beispiele mit einer Hilfdatei, eines ohne Datei):
#!/bin/bash
ls -d1 * > DIRLIST
# Bsp [1]: mit while read... aus Inputdatei DIRLIST
while read _DIR
do
# aktuelles Verzeichnis ausgeben
echo 'cd ' $_DIR
done < DIRLIST
# Bsp 2: oder mit for in Ausgabe von cat vonner DIRLIST-Datei
for _DIR in `cat DIRLIST` ; do
#! In das Aktuelle Verzeichniss gehen
echo 'cd '$_DIR
#! ... hier werden weiter Befehle im Aktuellen Verzeichnis ausgeführt
# cd ~/zuruck/zum/script
done
# Bsp 3 ...ohne Datei mit der Ausgabe von ls.
for _DIR in `ls -d1 *` ; do
#! In das Aktuelle Verzeichniss gehen
echo 'cd '$_DIR
#! ... hier werden weiter Befehle im Aktuellen Verzeichnis ausgeführt
# cd ~/zuruck/zum/script
done
Und Dateinamen wie $DIRLIST (falls es einer sein sollte) auch.
Grüße
Biber