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

MVC

Kohana 3 - Einstieg in das HMVC Framework

Kohana

Das Arbeiten mit MVC (Model-View-Controller) Frameworks ist heutzutage weit verbreitet.

Nicht immer weil sich der Entwickler scheut, eigene Gedanken zu machen. Oft weil man sich nicht unbedingt den eigenen Kopf zerbrechen muss, wenn es schon so viele vor einem getan haben.

Oder im Klartext: Warum das Rad immer neu erfinden?

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