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

IPA

Duque Brewpub

Die Karte

Wer eine Reise tut, der hat was zu erzählen. Und das möchte ich hier erledigen.

Auf der Entdeckungsreise nach immer neuen Geschmackserlebnissen zwischen Hopfen und Malz bin ich mitten in Lissabon auf eine kleine und sehr feine Pinte mit einem mehr als furiosen Angebot gestoßen:

Den Duque Brewpub.

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