Utilizzando find su un file specifico in $filepath :
if [ -n "$(find "$filepath" -prune -size +1000000c)" ]; then
printf '%s is strictly larger than 1 MB\n' "$filepath"
fi
Questo usa find per interrogare il file specifico in $filepath per le sue dimensioni. Se la dimensione è maggiore di 1000000 byte, find stamperà il percorso del file, altrimenti non genererà nulla. Il -n test è vero se la stringa ha una lunghezza diversa da zero, che in questo caso significa che find ha prodotto qualcosa, che a sua volta significa che il file è più grande di 1 MB.
Non hai chiesto informazioni su questo:trovare tutti i file normali più grandi di 1 MB sotto un $dirpath e stampando un breve messaggio per ciascuno:
find "$dirpath" -type f -size +1000000c \
-exec printf '%s is larger than 1 MB\n' {} +
Questi pezzi di codice dovrebbero essere portabili su qualsiasi Unix.
Nota anche che usando < o > in un test verificherà se le due stringhe coinvolte si ordinano in un modo particolare lessicograficamente. Questi operatori non eseguono confronti numerici. Per questo, usa -lt ("minore di"), -le ("minore o uguale a"), -gt ("maggiore di"), o -ge ("maggiore o uguale a"), -eq ("uguale a"), o -ne ("non uguale a"). Questi operatori eseguono confronti tra interi.