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.