[gelöst] rm -r Besimmten Ordner "NICHT" löschen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

[gelöst] rm -r Besimmten Ordner "NICHT" löschen

Beitrag von vobie » 04.11.2009 15:05:09

Hallo,

ich habe ein kleines Problem.
Ich möchte aus einem Ordner diverse Unterordner löschen, aber ein bestimmter Unterordner soll nicht gelöscht werden.
mit rm -r lösche ich ja alle.
Gibt es da eine einfache Lösung ?

Beispiel:
Ordner /TEST
/TEST/test1
/TEST/test2
/TEST/test3
/TEST/......

es soll alles aus /TEST außer /test2 gelöscht werden.

mfg.
vobie
Zuletzt geändert von vobie am 06.11.2009 08:31:41, insgesamt 1-mal geändert.
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von Meillo » 04.11.2009 15:25:44

Insofern du *nicht* die Option `-f' verwendest kannst du einfach die Schreibrechte entziehen:

Code: Alles auswählen

chmod -w /TEST/test2
Dann wirst du gefragt ob der Ordner entfernt werden soll. Wenn du da nur Enter drückst, dann bleibt er erhalten.

EDIT:
Stelle gerade fest, dass das so kein kann, aber mit anderen rm-Implementierungen nicht so sein muss!

Aber gab's da nicht Möglichkeiten, vermutlich FS-abhänging, durch erweiterte Dateiattribute sowas zu realisieren. Habe aber leider kein Stichwort parat.

----


(Frage mich gerade warum

Code: Alles auswählen

yes no | rm -r ...
trotzdem löscht. Interaktiv mit der Eingabe `no' aber nicht.)
Use ed once in a while!

Fjunchclick

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von Fjunchclick » 04.11.2009 15:43:04

Ich würde den betreffenden Ordner einfach woanders hin kopieren, dann den Rest löschen und den Ordner zurück kopieren. Dann kann dabei wenigstens nichts schiefgehen.

vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von vobie » 04.11.2009 16:03:19

hi,

danke für die schnelle Antwort.
mfg.
vobie
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von GoKi » 04.11.2009 16:56:59

Alternativ kann man find nutzen, um alle Ordner, außer den gewünschten aufzulisten. Dann bspw. per xargs an rm übergeben oder direkt mit exec in find.
Als Ansatz:

Code: Alles auswählen

find -maxdepth 1 -type d ! -name "." -a ! -name "test2"
MfG GoKi
:wq

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von chrisbra » 04.11.2009 17:04:19

Meillo hat geschrieben: Stelle gerade fest, dass das so kein kann, aber mit anderen rm-Implementierungen nicht so sein muss!

Aber gab's da nicht Möglichkeiten, vermutlich FS-abhänging, durch erweiterte Dateiattribute sowas zu realisieren. Habe aber leider kein Stichwort parat.
Man könnte das Ding immutable machen:

chattr +i <directory>

Dann sollte rm nicht löschen können.
Meine Whishlist
:wq!

Benutzeravatar
whisper
Beiträge: 3379
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von whisper » 04.11.2009 17:05:19

Genau, mit find, ne Liste maxhen, oder, wenns nicht viel sind einfach

Code: Alles auswählen

rm -ri
dann fragt er dich bei jedem Ordner
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt. 😉

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von Meillo » 04.11.2009 17:20:55

chrisbra hat geschrieben:
Meillo hat geschrieben: Aber gab's da nicht Möglichkeiten, vermutlich FS-abhänging, durch erweiterte Dateiattribute sowas zu realisieren. Habe aber leider kein Stichwort parat.
Man könnte das Ding immutable machen:

chattr +i <directory>
Das war's was mir nicht mehr einfiel.
Use ed once in a while!

vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von vobie » 04.11.2009 18:39:02

hi,

die Tipps sind ja alle ganz gut,
aber ich hätte vielleicht noch erwähnen sollen, das der rm -r Befehl aus einem shell script kommt,
deshalb fällt Interaktiv yes/no schon mal aus.

mfg.
vobie
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von Meillo » 04.11.2009 23:10:36

vobie hat geschrieben:aber ich hätte vielleicht noch erwähnen sollen, das der rm -r Befehl aus einem shell script kommt,
deshalb fällt Interaktiv yes/no schon mal aus.
Deshalb ja mein Versuch mit `yes no | rm -r ...', damit es eben nicht mehr interaktiv ist. (Vielleicht solltest du dir ja mal die Manpage von `yes' anschauen -- hört sich so an als ob dir das kein Begriff ist.)


Am besten ist aber wohl Fjunchclicks Vorschlag. Statt zu kopieren solltest du verschieben (mv). Wenn du dabei auf dem gleichen Dateisystem bleibst, dann werden dabei nämlich nur zwei Verzeichniseinträge geändert. Es ist also sofort erledigt.
Use ed once in a while!

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von GoKi » 05.11.2009 00:29:36

vobie hat geschrieben:aber ich hätte vielleicht noch erwähnen sollen, das der rm -r Befehl aus einem shell script kommt,
Was spricht denn gegen den Einsatz von find (wie oben angedeutet)?
MfG GoKi
:wq

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von Duff » 05.11.2009 07:44:27

Ist meiner Meinung nach die sauberste und beste Lösung!
Oh, yeah!

vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

Re: rm -r Besimmten Ordner "NICHT" löschen

Beitrag von vobie » 06.11.2009 08:31:01

hi,

danke an alle, ich habe die Sache mit mv gelöst.

mfg
vobie
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

Antworten