Ordner löschen, wenn vorhanden?

T

trainnee#1

Jungspund
hiho

ich hab die SuFu zwar benutzt aber wusste bei meinem Problem nicht so ganz wonach ich genau suchen muss.

Ich schildere euch einfach mal mein Problem:
Also ich habe ein Script, welches bestimmte Ordner aus einem bestimmten Verzeichnis löscht.
rm -rf [Ordner1] [Ordner2] usw ...

Nun kann das Verzeichnis, aus dem ich die Ordner löschen möchte, auch bestimmte Ordner haben oder auch nicht.
z.B.
könnten neben den Ordnern "Ordner1" und "Ordner2" auch noch ein Ordner "SuperOrdner" sein ^^
Ausserdem wird dieser bestimmte, zusätzliche Ordner immer teilweise anders heissen.
Es ist quasi der Ordnername+Datum oder so ähnlich.

Ich habe mir also überlegt, dass ich ja die bekannten Ordner löschen kann und dann via ls und egrep die bestimmten Ordner aussortieren bzw, wenn vorhanden, überhaupt finden kann.

Ich brauche also ne Lösung, damit ich
A: Gucken kann ob ein oder mehrere Ordner mit diesem Muster vorhanden sind
B: Fals etwas gefunden wurde, diese gefundenen Ordner löschen

Hab grad echt keine Ahnung was ich machen kann ... hoffe ihr habt ne Idee ;)
 
ja mit find könnte ich arbeiten wenn ich wissen würde wie die Ordner heissen ... aber das weiss ich zu dem Zeitpunkt einfach nicht.

Ein Ordner könnte zB mit einem variierenden Datum versehen sein.

ich hatte mir halt überlegt mit egrep nach einem bestimmten Muster zu suchen und fals Ergebnisse auftauchen, diese zu löschen.
Leider hat das mit egrep bisher nicht funktioniert so wie ich das gemacht habe.
 
Hallo,

was ist denn das entscheidende Kriterium, ob ein Verzeichnis gelöscht werden soll, wenn es nicht der Verzeichnisname ist?

cu
 
Wegns deinem ls+egrep-Hinweis: find hat auch einen -regex-Schalter:
man find schrieb:
-regex pattern
File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named ‘./fubar3’, you can use
the regular expression ‘.*bar.’ or ‘.*b.*3’, but not ‘f.*r3’. The regular expressions understood by find are by default Emacs Regular Expressions, but this
can be changed with the -regextype option.

Was hast du denn bisher? Und so ganz versteh ich dein Problem noch nicht ganz. Der bisherigen Beschreibung nach würd ich einfach ein rm -rf ....../* auf das Verzeichnis loslassen, in dem die zu löschenden Ordner sind. Hört sich für mich ja bisher so an, als würdest du ja im Prinzip alle Ordner darin löschen wollen?
 
Also ich habe das Verzeichnis
/Verzeichnis

in diesem Verzeichnis sind mehrere Ordner drinne.
Manche von den Ordnern werden nichtmehr gebraucht und können gelöscht werden und manche nicht.
Die Ordner die gelöscht werden können, können unterschiedlich aussehen.
Der Name besteht aus 3 Teilen:
Ordnername_Dateiname_Datum
Wobei der Ordnername zwischen 2 Varianten unterschiedlich sein kann, zB
Ordnername oder Ordname

Somit würde der Pfad so aussehen:
/Verzeichnis/Ordnername_Dateiname_Datum
oder
/Verzeichnis/Ordname_Dateiname_Datum

Mein erster Ansatz war einfach
rm -rf /Verzeichnis/* | egrep "(Ordnername|Ordname)"
was aber nicht Funktioniert da jedesmal der Komplette Ordnerinhalt gelöscht wird.

Ich möchte halt irgendwie bezwecken, dass diese bestimmten Ordner aus dem Verzeichnis gelöscht werden, ohne den kompletten Ordnername zu kennen.
 
Was haben denn die zu loeschenden Ordner gemein?
 
So hab ne Lösung gefunden.
Ist zwar nicht so wie ich mir das vorgestellt hatte aber funktioniert zumindest.

Aus dem einen Befehl den ich wollte hab ich einfach zwei Befehle gemacht die funktionieren:
ls /Verzeichnis/Ordnername* | xargs rm -rf
ls /Verzeichnis/Ordname* | xargs rm -rf

Das ist ganz simpel das was ich wollte ;)
Nur hab ich mir den Kompf darüber zerbrochen wie ich das in einem Befehl machen kann ohne daran gedacht zu haben einfach zwei Befehle draus zu machen.

Naja jetzt klapt es soweit ... Danke für die Antworten
 
Hi,

wenn, dann hilft dir ls -d /Verzeichnis/Ordnername* | xargs rm -rf ich verstehe atm bloss noch nicht, warum du nicht rm -rf /Verzeichnisname/Ordnername* einsetzt.
 
Hi,

wenn, dann hilft dir ls -d /Verzeichnis/Ordnername* | xargs rm -rf ich verstehe atm bloss noch nicht, warum du nicht rm -rf /Verzeichnisname/Ordnername* einsetzt.

Ziemlich gute Frage :think:
Habe einfach irgendwie mit ls angefangen und bin dann davon, gedanklich, nicht mehr weg gekommen.

Aber wieso es einfach machen wenn es auch kompliziert geht :D


Wo wir schonmal dabei sind ...
ich habe also nun die Ordner gelöscht und gucke per ls Befehl ob noch irgendwelche anderen Ordner oder Datein in dem Verzeichnis sind.
Wenn welche vorhanden sind sollen diese Angezeigt werden und das Programm soll erstmal stoppen.
Um das Programm weiter laufen zu lassen soll man dann irgendeine Taste drücken.
Irgendeine Idee was ich da machen kann?
 
Zuletzt bearbeitet:
Hi,

oehm, eventuell hilft dir der Befehl auch schon:

Code:
find . -type d 2>/dev/null | grep / || echo "Fehler, es wurden keine Verzeichnisse gefunden"

Gibt alle Ordner aus, wenn's keine gibt, schreibts die Meldung.

Wofuer brauchst du das andere Script? Dessen Sinn ist mir atm noch unklar.
 
Zuletzt bearbeitet:
Also das Script soll alle übrigen Ordner oder Dateien anzeigen und dann stoppen damit der Anwender die Möglichkeit hat irgendwelche Objekte manuell zu löschen.

Alles was noch in dem Verzeichnis drinne ist, ist im Prinzip egal ... der Anwender soll aber die Möglichkeit haben die überflüssigen Objekte löschen zu können.
Und deswegen wollte ich das so machen das dass Script kurz anhält, der Anwender die überflüssigen Sachen löschen kann (oder eben nich) und dann das Script weiter läuft.
 
Alsow, ich seh noch immer keinen Grund, warum man das ganze in einem Script ausweiten sollte. Es reicht doch, wenn man prueft, ob's was gibt, und daraufhin evtl was loescht?
 
Ja es soll auch kein neues Script erstellt oder aufgerufen werden.
Das passiert alles in einem Script.

Und dieses EINE Script soll gestoppt werden damit evtl noch was gelöscht werden kann.
 
Dazu muesste ich dein Script kennen. Was spricht dagegen, dass das Script erstmal fertig laeuft?
 
Das Script dient zum kopieren von Entwicklungsumgebungen.
In den besagten Verzeichnissen befinden sich zum Teil Standartordner die per Script einfach gelöscht werden.
Alles andere soll wie beschrieben manuel löschbar sein.

Das Script muss angehalten werden, da die nächsten Schritte im Script daraus bestehen, backups aufzurufen und aufzuspielen.
Deswegen muss das Verzeichnis soweit bereinigt sein und evtl wichtige Ordner müssen gesichert oder gelöscht sein.
 

Ähnliche Themen

Zeilenweise suchen, löschen und ersetzen / Inhalt einfügen

Ein komplizierteres Thema: Samba Server - XP-Pro Clients - wlan lan und und und

Zurück
Oben