Also habe ich ein Verzeichnis mit anderen Verzeichnissen erstellt und mich gefragt, ob es möglich ist, Dateien ohne Größe zu entfernen. Normalerweise sind diese Dateien 0 Bytes und da ich all diese Unterverzeichnisse zusammenführen möchte, könnte ich eine vollkommen legitime Datei durch eine schwerelose 0-Byte-Datei ersetzen, und schon ist meine legitime Datei fertig. Gibt es eine Möglichkeit, die Null-Byte-Dateien zu entfernen?
command-line
files
user245115
quelle
quelle
-empty
anstelle von verwenden-size 0b
.Alle Dateien mit einer Größe von 0 rekursiv suchen und entfernen:
Beispiel:
quelle
Sie können dies auch direkt in der Shell tun. Dies kann nützlich sein, wenn Sie keine leeren versteckten Dateien löschen möchten (diejenigen, deren Name mit einem beginnt
.
). Auch wenn Sie dies tun könnten,find
wäre es eine Alternative, die Shell selbst zu verwenden:Erläuterung
shopt -s globstar
: aktiviert die Globstar-Option für Bash, mit der**
eine oder mehrere Unterverzeichnisse abgeglichen werden .**/*
stimmt mit allen Dateien und Verzeichnissen im aktuellen Verzeichnis und allen seinen Unterverzeichnissen überein.for file in **/*; do ...; done
: Alle gefundenen Dateien und Verzeichnisse durchlaufen;[ ! -s "$file" ]
:[ -s "$file" ]
ist wahr, wenn die Datei existiert und nicht leer ist. Daher ist[ ! -s "$file" ]
(der!
Test wird umgekehrt) wahr, wenn die Datei nicht existiert oder wenn sie leer ist.[ -f "$file" ]
: true, wenn die Datei eine reguläre Datei ist. Kein Verzeichnis, keine Gerätedatei, kein Symlink usw.rm "$file"
: Löschen Sie die Datei.Stellen Sie
&&
sicher, dass der nächste Befehl nur ausgeführt wird, wenn der vorherige erfolgreich war, sodass nur leere, reguläre Dateien gelöscht werden.quelle
Obwohl die meisten Antworten richtig sind, sollten Sie nach folgendem Befehl suchen:
obwohl Sie diesen Befehl ausführen können:
Dadurch werden alle leeren Dateien gelöscht.
Sie können nach diesen Dateien suchen, bevor Sie sie löschen:
quelle
-type f
,-empty
auch leere Verzeichnisse löschen. Ich habe gerade die Manpage durchgesehen.