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.