it-swarm.com.de

Finden Sie Dateien mit Größe in Unix

Ich suche einen Unix-Befehl, um die Dateien mit ihrer Größe zu drucken. Ich habe das benutzt, aber es hat nicht funktioniert.

find . -size +10000k -print.

Ich möchte die Größe der Datei zusammen mit dem Dateinamen/Verzeichnis ausdrucken.

51
Kannan Lg
find . -size +10000k -exec ls -sd {} +

Wenn Ihre Version von find die Notation + Nicht akzeptiert (die sich eher wie die von xargs verhält), können Sie (GNU find und xargs, also unterstützt find wahrscheinlich trotzdem +):

find . -size +10000k -print0 | xargs -0 ls -sd

oder Sie können den + durch \; ersetzen (und mit der relativen Ineffizienz davon leben), oder Sie können mit Problemen leben, die durch Leerzeichen in Namen verursacht werden, und das tragbare Gerät verwenden:

find . -size +10000k -print | xargs ls -sd

Das -d In den Befehlen ls stellt sicher, dass, falls jemals ein Verzeichnis gefunden wird (unwahrscheinlich, aber ...), die Verzeichnisinformationen gedruckt werden und nicht die Dateien im Verzeichnis. Und wenn Sie nach Dateien mit mehr als 1 MB suchen (wie in einem jetzt gelöschten Kommentar empfohlen), müssen Sie den +10000k Auf 1000k Oder vielleicht +1024k Einstellen. oder +2048 (für 512-Byte-Blöcke die Standardeinheit für -size). Dies listet die Größe und dann den Dateinamen auf. Sie könnten natürlich die Notwendigkeit von -d Vermeiden, indem Sie -type f Zum Befehl find hinzufügen.

60

Mit Find kann die Dateigröße in Bytes mit% s als printf ausgegeben werden. % h /% f gibt das Verzeichnispräfix bzw. den Dateinamen aus.\n erzwingt eine neue Zeile.

Beispiel

find . -size +10000k -printf "%h/%f,%s\n"

Ausgabe

./DOTT/extract/DOTT/TENTACLE.001,11358470
./DOTT/Day Of The Tentacle.nrg,297308316
./DOTT/foo.iso,297001116
9
Adam

Vorausgesetzt, Sie haben GNU find:

find . -size +10000k -printf '%s %f\n'

Wenn Sie eine konstante Breite für das Größenfeld wünschen, können Sie Folgendes tun:

find . -size +10000k -printf '%10s %f\n'

Beachten Sie, dass -size +1000k wählt Dateien mit mindestens 10.240.000 Bytes aus (k ist 1024, nicht 1000). Sie haben in einem Kommentar gesagt, dass Sie Dateien größer als 1 MB haben möchten. Wenn das 1024 * 1024 Bytes sind, dann ist dies:

find . -size +1M ...

wird den Trick machen - außer dass es auch die Größe und den Namen von Dateien ausgibt, die gena 1024 * 1024 Bytes sind. Wenn das wichtig ist, können Sie Folgendes verwenden:

find . -size +1048575c ...

Sie müssen nur entscheiden, welches Kriterium Sie möchten.

6
Keith Thompson