Antworten:
Ich würde find dirname -not -empty -ls
unter der Annahme, GNU finden.
ls
und du es benutzt hast find
;) Ich habe es jedoch erhöht ... Es ist eine richtige Lösung
Dies ist ein Job, bei dem man herausfindet, dass er nicht mächtig genug ist.
find -maxdepth 1 -size +0 -print
-maxdepth 1
- Dies weist find an, nur das aktuelle Verzeichnis zu durchsuchen, zu entfernen, um in allen Unterverzeichnissen zu suchen, oder die Zahl zu ändern, um 2, 3 oder mehr Ebenen zu verringern.
-size +0
Dies weist find an, nach Dateien mit einer Größe von mehr als 0
Bytes zu suchen . 0
kann zu jeder möglicher Größe geändert werden, die Sie wünschen würden.
-print
weist find an, den vollständigen Pfad zu der gefundenen Datei auszudrucken
Bearbeiten:
Späte Hinzufügung: Sie sollten wahrscheinlich auch den -type f
obigen Schalter hinzufügen . Dies weist find an, nur Dateien zu finden. Und wie in den Kommentaren unten erwähnt, wird der -print
Schalter nicht wirklich benötigt.
-maxdepth 1
vorher platzieren -size +0
. Auch -print
ist die Standardaktion, so dass es nicht erforderlich ist.
find
variieren stark in Bezug auf die gültigen Optionen und die möglichen Ziele. GNU find
(was furchtbar häufig vorkommt) wird eine Warnung ausgeben , wenn Sie es -size
vorher setzen -maxdepth
.
Ls hat fast keine Möglichkeit, Dateien zu filtern: Das ist nicht seine Aufgabe. Das Filtern von Dateien ist die Aufgabe der Shell für einfache Fälle (durch Globbing) und das Suchen für komplexe Fälle.
In zsh können Sie das L
Globbing-Qualifikationsmerkmal so einstellen, dass nur Dateien mit einer Größe von> 0 erhalten bleiben (das .
Qualifikationsmerkmal beschränkt sich auf reguläre Dateien):
ls *(.L+0)
Benutzer anderer Shells müssen find verwenden. Mit GNU find (wie meistens unter Linux):
find -maxdepth 1 -type f ! -empty -exec ls {} +
Ein POSIX-konformer Weg ist:
find . -type f -size +0c -exec ls {} + -o -name . -o -prune
Wenn ls
nicht nur ein Beispiel und Sie lediglich die Absicht , visuelle Inspektion, könnten Sie sortieren nach Größe: ls -S
.