Forum Programmation.autre Bash : connaitre la taille d'un fichier

Posté par  .
Étiquettes :
0
22
mai
2006
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  . Évalué à 4.

    J'ai testé ça, qui parle de lui même :
    $ 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  . Évalué à 2.

      Merci,
      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  . Évalué à 4.

        Râââââhhhhhh.
        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  (site web personnel) . Évalué à 3.

    Conseil: man stat

    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.