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 Otto Otto 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 / Otto aufspüren, dann lautet der Befehl:
$ Find-L / home / Otto-maxdepth 1-type f-Größe 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/Otto suchen. Beachten Sie, dass die Tiefe 0 die Ebene der Befehlszeilenargument ist. (/home/Otto). 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 -Größe 0:
$ Find-L / home / Otto-maxdepth 1-type f! -Größe 0
Beachten Sie, dass F-Typ notwendig. Ohne diesen Ausdruck, Unterverzeichnisse in /home/Otto wie /home/Otto/.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 / Otto-maxdepth 1-type f-Größe 0 / home/Otto/file1.txt / home/Otto/file2.txt
$ Find-L / home / Otto-maxdepth 1-type f-Size-0-print0 | xargs -0 rm-r-f