Wenn ich den Befehl find wie folgt ausgebe:
$ find . -name *.ear
Es druckt aus:
./dir1/dir2/earFile1.ear
./dir1/dir2/earFile2.ear
./dir1/dir3/earFile1.ear
Was ich in der Befehlszeile "drucken" möchte, ist der Name und die Größe:
./dir1/dir2/earFile1.ear 5000 KB
./dir1/dir2/earFile2.ear 5400 KB
./dir1/dir3/earFile1.ear 5400 KB
unix
command-line
find
solaris
Brian Hart
quelle
quelle
find . -name '*.ear' -exec ls -lh {} + \;
(GNU-Erweiterung) oderfind . -name '*.ear' -print0 | xargs -0 ls -lh
. Sie können auch hinzufügen,-type f
wenn Sie nur an Dateien interessiert sind (oder-d
zu ls hinzufügen , wenn Sie möchten, dass Verzeichnisse selbst ohne deren Inhalt aufgenommen werden).-type f
um nur reguläre Dateien zu zählen.find . -name "*.ear" -type f
für Dateien.-type d
funktioniert für Verzeichnisse.Sie müssen -exec oder -printf verwenden. Printf funktioniert folgendermaßen:
-exec ist leistungsfähiger und ermöglicht die Ausführung beliebiger Befehle. Sie können also eine Version von 'ls' oder 'wc' verwenden, um den Dateinamen zusammen mit anderen Informationen auszudrucken. 'man find' zeigt Ihnen die verfügbaren Argumente für printf, die viel mehr als nur Dateigröße können.
[edit] -printf ist nicht im offiziellen POSIX-Standard enthalten. Überprüfen Sie daher, ob es von Ihrer Version unterstützt wird. Die meisten modernen Systeme verwenden jedoch GNU find oder eine ähnlich erweiterte Version, sodass eine gute Chance besteht, dass sie implementiert werden.
quelle
column
Befehl add bevorzugen .find . -name *.ear -printf "%p %k KB\n" | column -t
-printf
Option funktioniert auch unter OS X nicht. Siehe stackoverflow.com/questions/752818/… .Eine einfache Lösung besteht darin, die Option -ls in find zu verwenden:
Das gibt Ihnen jeden Eintrag im normalen "ls-l" -Format. Oder, um die spezifische Ausgabe zu erhalten, nach der Sie zu suchen scheinen:
Dadurch erhalten Sie den Dateinamen, gefolgt von der Größe in KB.
quelle
ls
Option, diese sollte in der Liste der Antworten weit oben stehen als sie ist.Mit gnu find denke ich, dass dies das ist, was Sie wollen. Es findet alle realen Dateien und keine Verzeichnisse (-typ f) und druckt für jede Datei den Dateinamen (% p), eine Registerkarte (\ t), die Größe in Kilobyte (% k), das Suffix "KB" und dann eine neue Zeile (\ n).
Wenn der Befehl printf die gewünschten Formatierungen nicht vornimmt, können Sie exec verwenden, gefolgt von dem Befehl, den Sie für jede Datei ausführen möchten. Verwenden Sie {} als Dateinamen und beenden Sie den Befehl mit einem Semikolon (;). Bei den meisten Shells sollten alle drei Charaktere mit einem Backslash versehen werden.
Hier ist eine einfache Lösung, die sie mit "ls -lh" findet und ausdruckt. Dabei wird die Größe in lesbarer Form angezeigt (k für Kilobyte, M für Megabyte):
Als weitere Alternative gibt "wc -c" die Anzahl der Zeichen (Bytes) in der Datei aus:
quelle
-name '*.ear'
in den Beispielen weggelassen wurde, sollte dies die Antwort Nr. 1 sein. Es beantwortet die Frage genau, erklärt die Bedeutung der Syntax und bietet mehrere Alternativen.find . -type f -printf '%k KB\t %p\n'
also zuerst die Dateigröße drucken, ist dies aufgrund der Ausrichtung höchstwahrscheinlich eine bessere Ausgabe in Bezug auf die Formatierung.Dadurch erhalten Sie nur die Dateigröße anstelle aller unnötigen Inhalte.
quelle
wc
funktioniert dafür einfach besser, wenn man die größe in bytes braucht.Awk kann die Ausgabe korrigieren, um genau das zu geben, wonach der Fragesteller gefragt hat. Auf meinem Solaris 10-System gibt find -ls die Größe in KB als zweites Feld aus.
Verwenden Sie andernfalls -exec ls -lh und wählen Sie das Größenfeld aus der Ausgabe aus. Wieder unter Solaris 10:
quelle
Warum nicht du -a benutzen ? Z.B
Funktioniert auf einem Mac
quelle
Ich hatte unter Mac OS X Probleme damit, wo der Befehl find nicht unterstützt wird
-printf
.Eine Lösung, die ich gefunden habe und die sich zugegebenermaßen auf die "Gruppe" für alle Dateien stützt, die "Mitarbeiter" sind, war ...
Dies teilt die lange Ausgabe in drei Token auf
Und dann werden die Token 2 und 3 ausgegeben, dh die Ausgabe ist die Anzahl der Bytes und dann der Dateiname
quelle
find
ist über Homebrew mitbrew install findutils
Dies sollte Ihnen das bieten, wonach Sie suchen, einschließlich Formatierung (dh Dateiname zuerst und Größe danach):
Beispielausgabe (wo ich früher
-iname "*.php"
ein Ergebnis erhalten habe):quelle
Sie könnten dies versuchen:
Dies gibt Ihnen die Größe in Bytes. Der Befehl du akzeptiert jedoch auch die Parameter -k für KB und -m für MB. Es wird Ihnen eine Ausgabe wie geben
quelle
quelle
Scripter World Referenz
quelle
Versuchen Sie die folgenden Befehle:
GNU
stat
:BSD
stat
:jedoch
stat
ist nicht Standard, sodu
oderwc
könnte ein besserer Ansatz sein:quelle
quelle
Wenn Sie die Gesamtgröße benötigen, finden Sie hier einen Skriptvorschlag
quelle