Bonjour a tous,
Pour une fois c'est moi qui ai besoin d'aide. J'ai besoin de connaitre si la taille (en Byte/octet) d'un fichier est paire ou impaire dans un script bash.
ls me permet de recuperer facilement la taille du fichier, mais apres y a t il un process facile pour determiner la parité ?
J'avoue ne pas etre tres fort coté formules math dans un script. Je vois bien un mod qui me permettrait de m'en sortir, mais pour l'implementation ....
Et en question subsidiaire, quelle est la difference exacte qui fait que les deux commandes suivantes donnent des tailles differentes :
ls -s --blocksize=1
ls -la
Taille d'inode ? dans un cas j'ai la taille reelle et dans l'autre la taille occupé ?
Par avance, merci
Khan
# Pour les calculs, si ça peut t'aider :
Posté par Gyro Gearllose . Évalué à 4.
$ echo $((3 % 2))
1
$ echo $((16 % 2))
0
Le % donne le reste de la division entière de a par b dans l'expression a % b.
Ca te permet de tester la parité d'un nombre.
Pour le reste, je laisse la parole^Wle clavier aux experts !
[^] # Re: Pour les calculs, si ça peut t'aider :
Posté par khan . Évalué à 2.
exactement ce que je cherchais :)
du coup mon script donne ca:
SIZEFILE=`ls -la $FILE | awk '{print $5}'`
REMAINDER=$(($SIZEFILE % 2 ))
if [ $REMAINDER -eq 0 ] ; then
echo "file size even"
else
echo "file size odd"
fi
Pour le moment je reste avec mon ls -la tant que je comprend pas la difference avec l'option -s.
Khan
[^] # Re: Pour les calculs, si ça peut t'aider :
Posté par Gyro Gearllose . Évalué à 4.
Bon, allez, parce que je suis content de t'avoir aidé, j'ai fouillé la page de man de ls pour toi....
Si j'ai bien tout compris, comme dirait l'autre, c'est que l'option -s de la commande ls te donne la taille d'un fichier en blocs sur le disque. Donc, il faut connaître la taille d'un bloc pour avoir la taille occupée par le fichier sur le disque. Par contre, ls -l te donne la taille en octets.
Voilà, en espérant avoir été assez clair, sinon, hésites pas !
# Obtenir la taille d'un fichier ...
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 3.
Exemple:
SIZE_BYTES=`stat -c %s /bin/ls`
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.