Antworten:
Ich würde find dirname -not -empty -lsunter der Annahme, GNU finden.
lsund 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 +0Dies weist find an, nach Dateien mit einer Größe von mehr als 0Bytes zu suchen . 0kann 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 fobigen Schalter hinzufügen . Dies weist find an, nur Dateien zu finden. Und wie in den Kommentaren unten erwähnt, wird der -printSchalter nicht wirklich benötigt.
-maxdepth 1vorher platzieren -size +0. Auch -printist die Standardaktion, so dass es nicht erforderlich ist.
findvariieren 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 -sizevorher 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 LGlobbing-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 lsnicht nur ein Beispiel und Sie lediglich die Absicht , visuelle Inspektion, könnten Sie sortieren nach Größe: ls -S.