find-l: Auffinden aller (Nicht-) leeren Dateien in einem Verzeichnis

Das Erstellen einer leeren Datei unter Linux ist recht einfach. Wenn eine Datei nicht existiert können Sie einfach eine leere Datei mit dem Befehl Touch erstellen.

touch DATEI
ls -l DATEI
	-rw-r - r - 1 tux tux 0 2009-05-02 20:15 DATEI 

Findet alle leeren Dateien in einem Verzeichnis kann aber auch mit einem einzigen Befehl erledigt werden. Genauso auch für nicht-leeren Dateien.

Angenommen Sie möchten alle leeren Dateien im Verzeichnis /home/tux aufspüren, dann lautet der Befehl:

find -l /home/tux -maxdepth 1 -type f -size 0

Standardmäßig findet der Befehl keine symbolischen Dateien. Verwenden Sie die-L-Option um diese ebenfalls zu erhalten.

Der Ausdruck -maxdepth 1 legt die maximale Tiefe fest bei der Suche. Standardmäßig sucht der Befehl find rekursiv in das Verzeichnis. Eine maximale Tiefe von 1 bedeutet, dass Sie nur die Dateien direkt in /home/tux suchen. Beachten Sie, dass die Tiefe 0 die Ebene der Befehlszeilenargument ist. (/home/tux). Sie können maxdepth und mindepth zu fein Kontrolle der Tiefe verwenden wie Sie wollen.

-type f bedeutet regelmäßige Dateien. Dies ist nicht unbedingt notwendig für leere Dateien (im Gegensatz zu denen die nicht leer sind)

Größe 0 ist selbsterklärend.

Wenn Sie alle nicht-leeren Dateien im gleichen Verzeichnis finden wollen so setzen Sie einfach ein ! vor -size 0

find -l /home/tux -maxdepth 1 -type f! -size 0

Beachten Sie, dass f-Typ notwendig. Ohne diesen Ausdruck, Unterverzeichnisse in /home/tux wie /home/tux/.Trash erscheint in der Ausgabe.

Meistens wollen Sie aber nicht nur Dateien finden, sondern auch diese Dateien weiterverarbeiten. Angenommen Sie möchten alle leeren Dateien in einem Verzeichnis löschen:

Aus Sicherheitsgründen sollte das find-Kommando zuerst eine Liste der Dateien finden. Anschließend werden diese Dateien dann mit dem Befehl xargs weiterverarbeitet.

find -l /home/tux -maxdepth 1 -type f -size 0
  /home/tux/file1.txt
  /home/tux/file2.txt

find -l /home/tux -maxdepth 1 -type f -size 0 -print0 | xargs -0 rm -rf