Utilisation de find sur un fichier spécifique à $filepath :
if [ -n "$(find "$filepath" -prune -size +1000000c)" ]; then
printf '%s is strictly larger than 1 MB\n' "$filepath"
fi
Cela utilise find pour interroger le fichier spécifique à $filepath pour sa taille. Si la taille est supérieure à 1 000 000 octets, find imprimera le chemin du fichier, sinon il ne générera rien. Le -n test est vrai si la chaîne a une longueur non nulle, ce qui signifie dans ce cas que find a produit quelque chose, ce qui signifie que le fichier est supérieur à 1 Mo.
Vous n'avez pas posé de question à ce sujet :trouver tous les fichiers normaux supérieurs à 1 Mo sous certains $dirpath et imprimer un court message pour chacun :
find "$dirpath" -type f -size +1000000c \
-exec printf '%s is larger than 1 MB\n' {} +
Ces morceaux de code devraient être portables sur n'importe quel Unix.
Notez également que l'utilisation de < ou > dans un test testera si les deux chaînes impliquées sont triées d'une manière lexicographique particulière. Ces opérateurs ne font pas de comparaisons numériques. Pour cela, utilisez -lt ("moins de"), -le ("inférieur ou égal à"), -gt ("supérieur à"), ou -ge ("supérieur ou égal à"), -eq ("égal à"), ou -ne ("pas égal à"). Ces opérateurs effectuent des comparaisons d'entiers.