Zitat von
Svenny
Hiho,
folgendes.. Ich habe viele Ordner, einige sind leer, einige sind gefüllt, wie ich leere ordner finde weiß ich "find -empty -type d" und die löschen müsste ja mit -exec rm -rf $1 gehen. soweit sogut, nun hab ich aber eine textdatei in der die ordnernamen drinstehen und zusätzlich dahinter ein paar info in der selben zeile, wie könnte ich nun diese zeile für den zu löschenden ordner daraus löschenm ich bin der meinung irgendwie ging das mal per grep.
etwas mager das Pflichtenheft
Wenn der Ordnername als absoluter Pfadname am Zeilenanfang der
Textdatei steht, und nur Ordner im aktuellen Verzeichnis geprüft
werden sollen, von der Logik (die Textdatei sei ../filelist):
Code:
#!/bin/sh
cp -p ../filelist ../filelist.bak # erstmal Backup
# nun die einzelnen leeren Verzeichnisse, oberstes Level
for x in $(find ./ -empty -type d -maxdepth 1); do
case "$x" in
./GANZWICHTIG) # das wollen wir nie löschen
;;
*) # alles andere wird gelöscht
# Listeninhalt OHNE aktuelles Verzeichnis zwischenspeichern
egrep -v "^$x\>" ../filelist >>../filelist.new
rm -ri "${x}" # hier frag ich lieber mit -i nach
mv ../filelist.new ../filelist #das wird neue Liste für nächste Runde
;;
esac
done
Das Muster von egrep kann angepaßt werden: ^ steht für Zeilenanfang,
Wortanfang/-ende wären \< und \> u.s.w.
Dieser Code ist ungetestet und soll nur die Logik einer
möglichen Lösung zeigen. Also keinesfalls direkt verwenden!
(mit rm -rf sollte man sich Zeit nehmen )
Viel Spaß,
Wolfgang
EDIT: wichtigstes vergessen: 'egrep -v' bewirkt, daß nur nichtpassende
Zeilen ausgegeben werden - dadurch taucht ein gelöschter Name
in der neuen Liste nicht mehr auf.
Lesezeichen