Wie kann ich Dateien finden, die größer/kleiner als x Byte sind?

Wie kann ich Dateien finden, die größer/kleiner als x Byte sind?

Wie kann ich in einem Terminal Dateien finden, die größer oder kleiner als x Bytes sind?

Ich denke, ich kann so etwas tun wie

find . -exec ls -l {} \;

und leiten Sie das Ergebnis dann weiter anawkum nach Dateigröße zu filtern. Aber sollte es nicht einen einfacheren Weg geben?

Antwort1

Verwenden:

find . -type f -size +4096c

um Dateien zu finden, die größer als 4096 Bytes sind.

Und :

find . -type f -size -4096c

um Dateien zu finden, die kleiner als 4096 Byte sind.

Beachten Sie den Unterschied zwischen + und - nach dem Größenwechsel.

Der -sizeSchalter erklärte:

-size n[cwbkMG]

    File uses n units of space. The following suffixes can be used:

    `b'    for 512-byte blocks (this is the default if no suffix  is
                                used)

    `c'    for bytes

    `w'    for two-byte words

    `k'    for Kilobytes       (units of 1024 bytes)

    `M'    for Megabytes    (units of 1048576 bytes)

    `G'    for Gigabytes (units of 1073741824 bytes)

    The size does not count indirect blocks, but it does count
    blocks in sparse files that are not actually allocated. Bear in
    mind that the `%k' and `%b' format specifiers of -printf handle
    sparse files differently. The `b' suffix always denotes
    512-byte blocks and never 1 Kilobyte blocks, which is different
    to the behaviour of -ls.

Antwort2

Ich denke, findes könnte allein nützlich sein, ohne eine Weiterleitung an AWK. Zum Beispiel:

find ~ -type f -size +2k  -exec ls -sh {} \;

Die Tilde gibt an, wo Ihre Suche beginnen soll. Als Ergebnis sollten nur Dateien angezeigt werden, die größer als 2 Kilobyte sind.

Um es etwas ausgefallener zu gestalten, können Sie die -execOption nutzen, einen weiteren Befehl auszuführen, der diese Verzeichnisse mit ihrer Größe auflistet.

Weitere Informationen finden Sie imManpage fürfind.

Antwort3

AWK ist für solche Dinge wirklich recht einfach. Hier sind einige Dinge, die Sie damit in Bezug auf die Überprüfung der Dateigröße tun können, wie Sie gefragt haben:

Dateien auflisten, die größer als 200 Byte sind:

ls -l | awk '{if ($5 > 200) print $8}'

Listen Sie Dateien mit weniger als 200 Byte auf und schreiben Sie die Liste in eine Datei:

ls -l | awk '{if ($5 < 200) print $8}' | tee -a filelog

Listen Sie Dateien mit 0 Bytes auf, zeichnen Sie die Liste in einer Datei auf und löschen Sie die leeren Dateien:

ls -l | awk '{if ($5 == 0) print $8}' | tee -a deletelog | xargs rm

Antwort4

Verwenden vonfd, was viel angenehmer zu verwenden ist alsfind

fd -S +1g

sucht im aktuellen Verzeichnis nach Dateien, die größer als 1 GB sind

fd -S -1g

sucht nach Dateienkleinerals 1 GB

verwandte Informationen