
Beim Arbeiten auf Linux-Servern kann es vorkommen, dass durch fehlerhafte Skripte, Umleitungen oder Tippfehler seltsame Dateien im System entstehen. Besonders im Home-Verzeichnis von root
können sich dann Dateien mit Namen wie ^[[2004hroot@host:~#
oder :
, @
, ~
usw. ansammeln. Diese sind oft leer und lassen sich aufgrund der Sonderzeichen nur schwer mit rm
entfernen.
Hier zeige ich, wie diese problematischen Dateien sicher und effizient mit einem Einzeiler über find gelöscht werden können – ganz ohne wildes Escaping oder Kopfschmerzen.
Beispiel
Angenommen, ein ls -al
im Verzeichnis /root
gibt Folgendes zurück:
-rw-r--r-- 1 root root 0 Apr 24 08:57 : -rw-r--r-- 1 root root 0 Apr 24 08:57 ^[[2004hroot@zib-glb-dok-03:~# -rw-r--r-- 1 root root 0 Apr 24 08:57 @file -rw-r--r-- 1 root root 0 Apr 24 08:57 [file
Alle diese Dateien sind 0 Bytes gross und besitzen Sonderzeichen, was eine direkte Löschung erschwert.
Lösung
Mit find
können wir gezielt alle leeren Dateien (-size 0
) im aktuellen Verzeichnis (.
) identifizieren und direkt löschen:
cd /root find . -maxdepth 1 -type f -size 0 -delete
Erklärung der Optionen:
.
: aktuelles Verzeichnis-maxdepth 1
: nur im aktuellen Verzeichnis suchen, keine Unterordner-type f
: nur reguläre Dateien-size 0
: nur leere Dateien mit 0 Byte-delete
: löscht die gefundenen Dateien