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.