bash: Daten rekursiv löschen

Bash - Bourne-again shell
26.03.2014

Es gibt eine ganze Menge Anwendungen, die aus unterschiedlichen Gründen ihre Spuren in ganzen Verzeichnissystemen hinterlassen. Manche diese Spuren sind kurzzeitig von Nutzen, etwa Sicherungsdateien (.bak) verschiedener Editoren, oder sind unabdingbar zum Funktionieren von Applikationen.

So legen etwa Versionsverwaltungssysteme (cvs oder subversion) Informationen in eigenen Unterverzeichnissen ab.

Es gibt nun verschiedene Bedürfnisse, diese Spuren aus einem Verzeichnis, samt Unterverzeichnissen zu tilgen. Weil man Speicher freigeben will oder weil eine Software an den Kunden übergeben werden soll.

Mit dem Befehl rm lassen sich einzelne Dateien oder ganze Verzeichnisse (mit Unterverzeichnissen) löschen.

Einzelne Datei löschen:

rm [Datei]

Alle Dateien mit einer bestimmten Endung löschen:

rm *.bak

Ein Verzeichnis rekursiv löschen:

rm -rf [Verzeichnis]

Will man jedoch ein ganzes Projekt von .svn Verzeichnissen befreien, ist man gut beraten, auf eine Kombination von rm und find zurückzugreifen:

find . -name '.svn' -type d -exec rm -rf '{}' \;

Und in ein kleines shell-Script verpackt:

#!/bin/bash

goAhead=N
echo "Dieses Script entfernt alle .svn Verzeichnisse mitsamt Inhalt."
echo "Wollen Sie fortfahren? [N/j]"
read goAhead

if [ ! $goAhead ]
then
    echo "Das Script wird jetzt abgebrochen."
    exit;
else
    if [ $goAhead != j ]
    then
        echo "Das Script wird jetzt abgebrochen."
        exit;
    fi
fi

find . -name '.svn' -type d -exec rm -rf '{}' \;
comments powered by Disqus

Feierwerk

zwoastoa im Feierwerk... auch am 17.01.2015

zwoastoa

Nach den IRXNs enterten ZWOASTOA die Bühne. Und ein Feier... Feuerwerk der guten Laune schlug das Publikum in seinen Bann.

Eine wilde Mischung aus... hm... allem Möglichen mit einer großen Portion Reggae oder Ska oder wie der Fachmann dazu sagt.

A ? B C D E F G H I J K L M N O P Q R S T U V W Z