Bash alle Dateien und Ordner löschen außer (doc man html)

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
ren22

Bash alle Dateien und Ordner löschen außer (doc man html)

Beitrag von ren22 » 26.12.2014 18:56:44

Hallo,

ich suche, am besten ein Einzeiler, eine Möglichkeit, alle Dateien und Ordner/ggf. Unterordner in einem Verzeichnis zu löschen außer (doc,man,html) Dateien oder Ordner.
Kann mir einer mal ein Tip geben am besten unter bash

Code: Alles auswählen

find . -newer /tmp/mark -not -type d | grep -E '(/info/|/doc/|/man/|/html/)'
das findet zwar was ich behalten möchte aber nicht die restlichen / überflüßigen Dateien und Ordner :)

vielen Dank

JuergenPB

Re: Bash alle Dateien und Ordner löschen außer (doc man html

Beitrag von JuergenPB » 26.12.2014 19:04:21

Vielleicht so:

Code: Alles auswählen

$ find . -not -name "*.doc" -not -name "*.man" -not -name "*.html" -exec rm {} \;
Ohne Gewähr! — Vielleicht erstmal mit "echo" statt "rm" testen ;-)

Benutzeravatar
Inkodiktus
Beiträge: 702
Registriert: 15.08.2013 01:15:35
Lizenz eigener Beiträge: GNU General Public License
Wohnort: » host@user╺─╸[~]

Re: Bash alle Dateien und Ordner löschen außer (doc man html

Beitrag von Inkodiktus » 26.12.2014 21:21:07

ich würde da noch ein -r hinzufügen, damit auch nicht leere Ordner gelöscht werden.
Mein Geheimtipp :lol:

Und könntest du dies genauer erklären?

Code: Alles auswählen

 {} \;
kann man denn so etwas nicht bauen? Oder so was ähnliches?

Code: Alles auswählen

rm -r *[!.doc,!.man,!.html]
Meine Sprachkenntnisse: nur deutsch
Mein Laptop: http://www.asus.com/Notebooks_Ultrabook ... ifications
Mein Debian: Stable + OpenBox
Mein Editor: Emacs
Meine Devise: Frei bleiben - so lange wie es geht : -)

JuergenPB

Re: Bash alle Dateien und Ordner löschen außer (doc man html

Beitrag von JuergenPB » 27.12.2014 12:38:23

Inkodiktus hat geschrieben:Und könntest du dies genauer erklären?

Code: Alles auswählen

 {} \;
rm muß ja wissen was gelöscht werden soll:
Die geschweiften Klammern stehen für die Dateien die find findet.
Der Befehl muß mit einem Semikolon abgeschlossen werden. Das Semikolon muß maskiert werden (mit Backslash).

Allerdings war mein Vorschlag nach dem Motto "sieht den Baum vor lauter Wäldern nicht".
Statt

Code: Alles auswählen

$ find . -not -name "*.doc" -not -name "*.man" -not -name "*.html" -exec rm {} \;
wäre es kürzer

Code: Alles auswählen

$ find . -not -name "*.doc" -not -name "*.man" -not -name "*.html" -delete
zu schreiben.


Die Warnung: „Ohne Gewähr“ bleibt bestehen. — 1x vertippt und Festplatte leer… oder so…

ren22

Re: Bash alle Dateien und Ordner löschen außer (doc man html

Beitrag von ren22 » 28.12.2014 20:44:25

Danke für die Antworten, ich hätte da noch ein Problem

die Directory-Struktur ist so :

/usr
/usr/local
/usr/local/sbin
/usr/local/share/man/man8

wenn ich nun versuche die "info/|/doc/|/man/|/html" Ordner zu löschen
wird mit "rm -rf" ja trotzdem das Verzeichnis gelöscht wo die "info/|/doc/|/man/|/html" Ordner enthalten sind ...

jemand noch eine Idee ?

Danke

Antworten