nervende "Thumbs.db" Dateien rekursiv löschen

Status
Für weitere Antworten geschlossen.

botharg

Benutzer
Mitglied seit
19. Okt 2009
Beiträge
48
Punkte für Reaktionen
0
Punkte
12
Wieder Hallo!

Wie ich feststellen mußte, kann Windows, insbesondere Vista/Windows 7, richtig nervtötend sein, was "Systemdateien" anbelangt. Leider betrachtet Windows von sich aus diese (für meinen Geschmack) völlig überflüssigen "thumbs.db" und Verwandte (ehtumbs.db des Mediacenter usw.) als elementaren Bestandteil eines Verzeichnisses, nur weil Win irgendwann mal eine Mediadatei in diesem Verzeichnis (oder daruterliegenden) festgestellt hat. Also schnell eine "thumbs.db" neu erstellen, oder einer vorhandenen (zefix, dieser hier hatte ich gerade sämtliche Attribute zurückgesetzt, damit ich sie und das blöde Verzeichnis löschen kann...! grrrr) wieder die Systemattribute verpassen, damit ja keiner "zufällig das (leere!) Verzeichnis löscht.
Örgs!

Das ganze über den Filemanager jeweils manuell zu löschen ist nicht gerade produktiv, und Windows nach seinen "Übeltätern" suchen zu lassen bringt NULL Erfolg (sO.). Auf Anhieb fällt mir da noch ein (allerdings weniger nervend): desktop.ini, ehthumbs.db, oder ähnliches.
Mich stören jedoch hier nur die "?humbs.db" Dateien, wenn man also genau das Oben beschriebene möchte:

Also Putty starten, Shell aufrufen, in das entsprechende Verzeichnis wechseln und den Befehl absetzen, ALLE im aktuellen Verzeichnis und den untergeordneten enthaltenen "?humbs.db" Dateien zu suchen und zu löschen. Seek-and-Destroy! hähä!

Rich (BBCode):
find . -type f -name "?humbs.db" -exec rm "{}" \;

Wer das etwas dauerhafter möchte, kann daraus natürlich ein Script machen oder (so wie ich) ein Alias definieren, das hat den Vorteil keinen Aufruf über "sh" zu brauchen. Einfach die "/root/.profile" aufrufen (da stehen auch die anderen Aliase drin) und seinen eigenen Befehl anlegen:

Rich (BBCode):
alias thumbs.db="find . -type f -name \"?humbs.db\" -exec rm \"{}\" \;"

Der Alias kann so allerdings erst benutzt werden, wenn die Shell neu gestartet wird. Alternativ kann natürlich jederzeit in der laufenden Shell der Alias festgelegt werden, in dem man den obigen Befehl direkt am Prompt eingibt.
In diesem Fall heisst mein Alias für diesen Befehl: "thumbs.db".
Aus Sicherheitsgründen sollte die Jokernutzung im Suchstring nicht soooo Allgemein sein.
Und wie immer wenn was gelöscht wird - vor allem ohne Nachfrage: erst in einem Testverzeichnis ausprobieren.
Ein Hinweis noch: Der "rm" Befehl scheint (wie die anderen DS-eigenen) nicht vollständig mit den üblichen Parametern zu arbeiten, einzig "-f" funktionierte bei mir ohne Fehlermeldung.

Gruß
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Manchmal machen die einfachen ' ein Skript noch besser ;)

Die Kommandos auf der DiskStation sind meist interne Aufrufe der BusyBox. Sinn der BusyBox ist es, ein möglichst einfaches und kleines Set an Posix-Commands resident vorzuhalten. Man kann das beim Kompilieren der BusyBox selbst festlegen, welche Kommandos mit welchen Optionen man haben möchte.

Also es ist bewusst so, dass viele Linux-Kommandos nur rudimentär in der BusyBox drinne sind! (It's a feature, not a bug) http://www.busybox.net/

Wer vollständigere Kommandooptionen haben möchte, kann sich ja alles per IPKG dazu installieren :)

Itari
 

botharg

Benutzer
Mitglied seit
19. Okt 2009
Beiträge
48
Punkte für Reaktionen
0
Punkte
12
jepp, habsch mitgeschnitten, daß die BusyBox nur "beschnittene" kleine Commands drin hat. :eek:
War eigentlich auch nicht so "negativ" gemeint wie es klang, es ist eher das Problem, daß wenn man sich versucht einzulesen (so wie ich...) meist auf die "vollständigen" Commands bezogen wird, und dann steht man recht oft vor dem Problem, daß die angebotene Lösung SO eben grade nicht funktioniert.
Hat (wohl nicht nur) mich einiges an Zeit gekostet :D

Was genau meintest Du mit den ' ? die Entwerter \ vor den Anführungszeichen?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Probier mal, ob dies bei dir auch das Gleiche macht:

alias thumbs.db="find . -type f -name '?humbs.db' -exec rm '{}' \;"

oder

alias thumbs.db='find . -type f -name "?humbs.db" -exec rm "{}" \;'

Itari
 

botharg

Benutzer
Mitglied seit
19. Okt 2009
Beiträge
48
Punkte für Reaktionen
0
Punkte
12
hi itari,

Deine zweite Alternative ist wohl die richtige, denn die erste hatte ich genau deswegen nicht benutzen können, weil dort bei Pfaden mit Leerzeichen immer Fehler aufgetreten sind.
Rich (BBCode):
alias thumbs.db='find . -type f -name "?humbs.db" -exec rm "{}" \;'
funktioniert allerdings tadellos.

Aber es scheint mir, als könnte man eine kleine Doktorarbeit darüber schreben, wann " und wann ' genutzt werden kann/muß. Andererseits stehe ich ja auch gerade am Anfang der unendlichen Tiefen der Linux-Shell(s)...:D
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Aber es scheint mir, als könnte man eine kleine Doktorarbeit darüber schreben, wann " und wann ' genutzt werden kann/muß. Andererseits stehe ich ja auch gerade am Anfang der unendlichen Tiefen der Linux-Shell(s)...:D

X=123
"$X" -> 123 - Shell-Variable werden substituiert, auch *, ? und [ ]-Ausdrücke
'$X' -> $X - nix wird substituriert, d.h. das ist so, als würstest vor jedes kritische Zeichen ein \ machen.

Itari
 

botharg

Benutzer
Mitglied seit
19. Okt 2009
Beiträge
48
Punkte für Reaktionen
0
Punkte
12
ok... danke für die prompte Antwort. :)
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
13
Punkte
84
Der Alias kann so allerdings erst benutzt werden, wenn die Shell neu gestartet wird.
oder durch die Eingabe von . ~/.profile. Die Kontrolle, ob der Alias nun drin steht, kann dann mit set durchgeführt werden.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat