Wahrscheinlich, weil der Fragesteller darum gebeten hat lsund du es benutzt hast find;) Ich habe es jedoch erhöht ... Es ist eine richtige Lösung
BloodPhilia
2
Wenn Sie "find. -Not -empty -ls" verwenden, wird auch das aktuelle Verzeichnis einbezogen (dh "." In der Ausgabe). Um nur die aktuellen Dateien einzubeziehen, verwenden Sie "find. -Type f -not -empty -ls".
-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.
Um eine Warnung zu vermeiden, sollten Sie -maxdepth 1vorher platzieren -size +0. Auch -printist die Standardaktion, so dass es nicht erforderlich ist.
CYRUS
@ Cyrus - Keine Warnungen für mich (Cygwin)
Nifle
Die Implementierungen 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.
ls
und du es benutzt hastfind
;) Ich habe es jedoch erhöht ... Es ist eine richtige LösungDies ist ein Job, bei dem man herausfindet, dass er nicht mächtig genug ist.
-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 als0
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 auszudruckenBearbeiten:
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.quelle
-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. GNUfind
(was furchtbar häufig vorkommt) wird eine Warnung ausgeben , wenn Sie es-size
vorher setzen-maxdepth
.find dirname -type f ! -empty
quelle
Wenn Sie beabsichtigen zu verwenden
ls
, benötigen Sie ein wenig Hilfe vonawk
.quelle
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):Benutzer anderer Shells müssen find verwenden. Mit GNU find (wie meistens unter Linux):
Ein POSIX-konformer Weg ist:
Wenn
ls
nicht nur ein Beispiel und Sie lediglich die Absicht , visuelle Inspektion, könnten Sie sortieren nach Größe:ls -S
.quelle
funktioniert besser, wenn Sie nicht nur Verzeichnisse, sondern alle nicht leeren Dateien möchten.
quelle
Bash 4.0+
quelle