• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Leere Unterordner

iea

Member
Code:
rmdir ./*

Ok das hab ich... das zweite Problem ist das ich nicht weiss wie meine Unterordner benannt wurde. Jedoch ist in jedem UNterordner eine Datei die ich auswerten muss. Das auswerten habe ich bereits nur wie kann ich in die Unterordner wechseln?
 
OP
iea

iea

Member
OK zweiter Versuch.

Ich hab einen Ordner in diesem Befinden sich 150 Unterordner jedoch hab ich keine Ahnung wie die heissen.

Ich muss jetzt aber ein Script schreiben das mit die Datei srv.xml in jedem Unnterordner auswerten um eine ganz bestimmte information zu bekommen.

Das Script welches mir diese Info aus der Datei schreibt habe ich bereits nur weiss ich nicht wie man automatisch and die unbekannten Unterordner kommt via Script.
 
OP
iea

iea

Member
Hi danke erstmal für die antwort. Der Ansatz gefällt mir schonmal.

Also die Sprache is eigentlich egal gut wäre Perl oder shell script.

Also ich muss für jede xxx.xml eine info datei erstellen und in den gleichen ordner ablegen ....

Ich werde es morgen damit einmal versuchen ... vorerst danke
 

moenk

Administrator
Teammitglied
Hier hilft Dir "find" weiter, damit findest Du Dateien in den Unterverzeichnissen.
 
OP
iea

iea

Member
Also das mit den Unterordnern hab ich nur funktioniert mein sed script nicht mehr.

In meinen Dateien steht z.B. :

dsa fda
s gfdsg
fs hgafdh dfhadf
h gfdh df
hfahf
<host>abcdefgh</host>
fdgashg
hafdh
fgasd
gfsadfsad
<net>eth0</net>

Jetzt möchte ich in eine seperate Datei folgendes reinschreiben:

Hostname : abcdefgh
Netz : eth0

Hier mein Ansatz :

Code:
for f in  /*/datei.txt; 
do  

sed -n -e '/<host>/p' date.txt >> INFO
sed 's/<host>/'Hostname='/g' /root/INFO >> /root/INFO
sed 's/</host>/''/g' /root/INFO >> /root/INFO
done;
 
Evtl. so:
Code:
#!/bin/sh
DIR="/foo/bar/";
DAT="datei.xy";

find -H "$DIR" -name "$DAT" -print | while read i;
  do
    HOST=`grep "<host>" "$i" | awk -F"[<,>]" '{print $3}'`;
    NET=`grep "<net>" "$i" | awk -F"[<,>]" '{print $3}'`;
    echo "$HOST  $NET";
done;
Statt des 'echo' dann natürlich in eine Datei schreiben.
 
OP
iea

iea

Member
Super das ist genau das was ich suche. DANKE


Wie kann ich hier jetzt Dateien ausschliessen

Code:
for xmldir in /data/files/*; do 
XDIR="$fildir"; 

    echo "$HOST  $NET" >> /"$XDIR"/INFO
 
Wolltest du nicht eben noch wissen wie du das aktuelle Verz. herausbekommst?
- So: 8)
Code:
#!/bin/sh
DIR="/home/testing-suse/test/";
DAT="2.txt";

find -H "$DIR" -name "$DAT" -print | while read i;
  do
    HOST=`grep "<host>" "$i" | awk -F"[<,>]" '{print $3}'`;
    NET=`grep "<net>" "$i" | awk -F"[<,>]" '{print $3}'`;
    CDIR="${i%$DAT}";
    echo "$HOST  $NET  $CDIR";
done;

Code:
for xmldir in /data/files/*; do ...
Hier könntest du dann mit regulären Ausdrücken arbeiten.
Also den Ausdruck "/data/files/*" auf die Dateien anpassen, die du haben willst.

Btw: Du weist schon wie for-Schleifen funktionieren ...
Code:
for i in [Ausdruck]; do echo "$i"; done;
Dabei ist i die Variable die auf den Ausdruck zutrifft.
Bei dir also "xmldir" und im ersten Fall "f" - und beide hast du nicht verwendet :wink:
 
OP
iea

iea

Member
Jo danke ... das wars jetzt funktioniert alles.

Sorry xmldir hatte ich noch nicht umbennant als ich es gepostet hab.
 
So funktioniert es:
Code:
#!/bin/sh
DIR="/home/testing-suse/test/";
DAT="2.txt";

find -H "$DIR" -name "$DAT" -print | while read i;
  do
    HOST=`grep "<host>" "$i" | awk -F"[<,>]" '{print $3}'`;
    NET=`grep "<net>" "$i" | awk -F"[<,>]" '{print $3}'`;
    CDIR="${i%$DAT}";
    echo -e "Hostname: $HOST\nNIC: $NET" > "$CDIR/INFO";
done;
8) :wink:
 
OP
iea

iea

Member
Danke ich hab es jetzt mit einer For schleife gelöst :D

Aber funktioniert das die Hauptsache :p

Kann man eigentlich rmdir nicht in /dev/NULL oder eine Datei umlenken

rmdir /data/* >> /dev/NULL
rmdir /data/* > /rmlog


Gibt bei mir trotzdem alles aus ....
 
Oben