Pomocí find
na konkrétním souboru na $filepath
:
if [ -n "$(find "$filepath" -prune -size +1000000c)" ]; then
printf '%s is strictly larger than 1 MB\n' "$filepath"
fi
Toto používá find
pro dotaz na konkrétní soubor na $filepath
pro jeho velikost. Pokud je velikost větší než 1 000 000 bajtů, find
vypíše cestu k souboru, jinak nevygeneruje nic. -n
test má hodnotu true, pokud má řetězec nenulovou délku, což v tomto případě znamená find
vypsal něco, což zase znamená, že soubor je větší než 1 MB.
Na toto jste se neptali:Hledání všech běžných souborů, které jsou větší než 1 MB pod nějakým $dirpath
a vytištění krátké zprávy pro každé:
find "$dirpath" -type f -size +1000000c \
-exec printf '%s is larger than 1 MB\n' {} +
Tyto části kódu by měly být přenositelné na jakýkoli Unix.
Všimněte si také, že pomocí <
nebo >
v testu otestuje, zda dva zúčastněné řetězce třídí určitým způsobem lexikograficky. Tyto operátory neprovádějí číselná srovnání. K tomu použijte -lt
("menší než"), -le
("menší nebo rovno"), -gt
("větší než") nebo -ge
("větší než nebo rovno"), -eq
("rovná se") nebo -ne
("nerovná se"). Tyto operátory provádějí porovnávání celých čísel.