[Batch, Shell] Bestimmte Dateitypen in Unterordnern löschen

Es war lange ruhig hier im Blog, aber nun habe ich wieder was neues für euch.

Für das Löschen von Dateien eines bestimmten Datentypes habe ich für euch zwei Skripte, eins für Windows und eins für Linux/Unix/OSX.
Nach dem Aufruf dieser Datei wird nach einem zu löschen Dateityp gefragt. Hier könnt ihr z.B. „url“ (natürlich ohne Anführungszeichen) eingeben.
Anschließend durchläuft das Skript den Ordner, in dem es liegt und alle weiteren Unterordner und löscht alle Dateien mit dieser Dateiendung.
Hier ist eine Schleife einprogrammiert, die erst beendet wird, wenn ihr den Dateityp „end“ eingebt.

ACHTUNG: Es gibt keine Löschbestätigung!

Für Windows:

Ihr erstellt euch eine Datei mit dem Datentyp „cmd“ und öffnet diese im Texteditor eures Vertrauen (ich bin Fan von Notepad++).
Folgender Inhalt:

@ECHO off
ECHO ======= start =======
START
	set /p Filetype="Filetype to delete: "
	if "%Filetype%" == "end" goto END
	goto DO_DELETE

REM ---- deleting ----
:DO_DELETE
	del /s *.%Filetype%
	goto START
:END

ECHO ======= finished =======
pause

Für Linux/Unix/OSX:

Am besten erstellt ihr euch hier eine Datei mit dem VI mit der Dateiendung „sh“.
Folgender Inhalt:

#!/bin/bash
echo "======= start ======="

while [ "$Filetype" != "end" ]
do
	echo "Filetype to delete: "
	read Filetype

	if [ "$Filetype" != "end" ]
	then
		# ---- deleting ----
		find . -name "*.$Filetype" -exec rm -vf {} \;
	fi
done

echo "======= finished ======="

Vergesst hier nicht, die Datei noch mit z.B. chmod 755 ausführbar zu machen!

Advertisements
Veröffentlicht in Batch, Shell. Schlagwörter: , , , , , , , , . 3 Comments »

3 Antworten to “[Batch, Shell] Bestimmte Dateitypen in Unterordnern löschen”

  1. user unknown Says:

    Filetype gibt es unter uixoiden Systemen auch – da bedeutet es aber Verzeichnis, normale Datei, Socket, symbolischer Link usw.
    Ohne einen Hinweis, dass man zum Beenden „end“ eingeben muss, wird man das leicht vergessen und zu dem ohnehin geläufigen Ctrl-C greifen. Zumindest ob End nun groß- oder klein geschrieben gehört wird man leicht vergessen.

    Eine „finished“ Ausgabe ist ebenso überflüssig wie eine „start“ – das erkennt man leicht daran, dass es auch sonst niemand von Verstand macht. Dass das Script losgelegt hat merkt man ja an der Eingabeaufforderung, dem Prompt, und so gibt es für die Meldung auch gleich einen prompt-Schalter für den Befehl read:

    read -p "Extension? (end to end the loop)" extension

    Gnu-find hat seit 1870 einen -delete-Schalter, das könnte sich auch langsam rumgesprochen haben.

    find . -type f -name "*.$extension" -delete

    Wer vi oder emacs benutzt, der sollte das eigentlich wissen – alle anderen verwenden lieber gedit oder textmate.

  2. user unknown Says:

    Ah, ich wollte ja noch eine Quelle für meine Behauptungen nachtragen – Eric S. Raymond, The art of unix programming, http://www.catb.org/~esr/writings/taoup/html/

    Und eine Frage hätte ich noch: Die Codeformatierung hier mit WordPress – ist das ein gekauftes Feature oder an Dein gewähltes Layout gebunden, oder kann man das im Prinzip mit jedem WordPressaccount?

  3. maTTes Says:

    Hi „user unkown“,
    vielen Dank für deine Informationen.
    Ja, stimmt, ich kann den Code noch entschlacken, da gebe ich dir Recht.
    „read -p“ kenne ich auch, hat aber auf meiner Maschine leider nicht funktioniert, denn damit hatte ich es eigentlich auch vor.

    Zur Codeformatierung: Da hatte ich auch einen Beitrag sogar hier geschrieben ;-) Steht sogar noch links unter den neusten Artikeln. Es ist nicht gekauft, das funktioniert bei jedem Blog unter wordpress.com


Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: