Mit find auf eine bestimmte Datei unter $filepath :
if [ -n "$(find "$filepath" -prune -size +1000000c)" ]; then
printf '%s is strictly larger than 1 MB\n' "$filepath"
fi
Dies verwendet find um die spezifische Datei bei $filepath abzufragen für seine Größe. Wenn die Größe größer als 1000000 Byte ist, find gibt den Pfadnamen der Datei aus, ansonsten wird nichts generiert. Die -n test ist wahr, wenn die Zeichenfolge eine Länge ungleich Null hat, was in diesem Fall bedeutet, dass find etwas ausgegeben, was wiederum bedeutet, dass die Datei größer als 1 MB ist.
Sie haben nicht danach gefragt:Finden aller regulären Dateien, die größer als 1 MB sind, unter einigen $dirpath und Drucken einer kurzen Nachricht für jeden:
find "$dirpath" -type f -size +1000000c \
-exec printf '%s is larger than 1 MB\n' {} +
Diese Codeteile sollten auf jedes Unix portierbar sein.
Beachten Sie auch die Verwendung von < oder > in einem Test wird geprüft, ob die beiden beteiligten Strings lexikografisch auf eine bestimmte Weise sortiert sind. Diese Operatoren führen keine numerischen Vergleiche durch. Verwenden Sie dafür -lt ("kleiner als"), -le ("kleiner oder gleich"), -gt ("größer als") oder -ge ("größer als oder gleich"), -eq ("gleich") oder -ne ("Nicht gleichzusetzen mit"). Diese Operatoren führen ganzzahlige Vergleiche durch.