IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

petit script, calculer taille fichier


Sujet :

Linux

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut petit script, calculer taille fichier
    bonjour à tous, je cherche a réaliser un script qui permet de recupérer le nom d'un fichier, calculer sa taille, si elle est sup a 512o, il doit dire " it's a big file" sinon "it's a small file". je ne souhaite pas que vous me donniez le script en entier sinon je ne cherche pas mais je bute sur un petit soucis. voici l'ebauche de script que j'ai faite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
    #ce script doit recupérer le nom d'un fichier, calculer sa taille, si elle est sup a 512o, il doit dire " it's a big file" sinon "it's a small file"
    fichier = $1;
    if [ $# != 1 ]
    then echo "Usage : ./tp4.sh <file name>"
    exit
    fi
    if [ -e fichier ]
    find / -type f -name "$1" -print 
    else 
    echo "Usage : ./tp4.sh <file name>"
    fi
    exit
    la ligne qui m'ennuie est en rouge, pour le moment je lui demande de trouver le fichier. je voulais mettre un pipe pour utiliser la sortie et calculer le poinds du fichier mais je ne sais pas ce que je dois utiliser pour ça...

  2. #2
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    La commande wc pourrait peut être t'aider.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Si le fichier existe (j'aurais d'ailleurs plutôt fait -f pour être sûr qu'il s'agit d'un fichier normal), il n'est pas nécessaire de retrouver le fichier avec find

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Kuchiki Byakuya Voir le message
    bonjour à tous, je cherche a réaliser un script qui permet de recupérer le nom d'un fichier, calculer sa taille, si elle est sup a 512o, il doit dire " it's a big file" sinon "it's a small file". je ne souhaite pas que vous me donniez le script en entier sinon je ne cherche pas mais je bute sur un petit soucis. voici l'ebauche de script que j'ai faite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
    #ce script doit recupérer le nom d'un fichier, calculer sa taille, si elle est sup a 512o, il doit dire " it's a big file" sinon "it's a small file"
    fichier = $1;
    if [ $# != 1 ]
    then echo "Usage : ./tp4.sh <file name>"
    exit
    fi
    if [ -e fichier ]
    find / -type f -name "$1" -print 
    else 
    echo "Usage : ./tp4.sh <file name>"
    fi
    exit
    Citation Envoyé par N_BaH Voir le message
    Si le fichier existe (j'aurais d'ailleurs plutôt fait -f pour être sûr qu'il s'agit d'un fichier normal), il n'est pas nécessaire de retrouver le fichier avec find
    La remarque de N_BaH est bien dit. De plus, la syntaxe "fichier = $1" n'est pas correcte en shell. La bonne syntaxe sera "fichier=$1". J'espère que tu verras la différence.
    De plus, toutes les autres références à "fichier" dans le script semblent indiquer que tu t'intéresses au contenu de la variable fichier. Donc mettre un "$" devant le token sera un plus non négligeable pour la réussite de ton TP...

    Citation Envoyé par Kuchiki Byakuya Voir le message
    je voulais mettre un pipe pour utiliser la sortie et calculer le poinds du fichier mais je ne sais pas ce que je dois utiliser pour ça...
    Un pipe est un outil permettant de prendre la sortie de la commande 1 comme entrée de la commande 2.
    Si tu mets un pipe entre un find et un wc, alors wc prendra comme entrée le flux de datas affichés par le find. Donc tu ne compteras que le listing affiché par le find.
    Reste simple. Tu as un fichier, tu le passes simplement par wc -c et t'auras sa taille en caractères. Le reste n'est qu'une affaire de syntaxe.

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    La page de man de la version de wc (GNU coreutils) 6.10 indique
    -c, --bytes
    afficher le nombre d’octets

    -m, --chars
    afficher le nombre de caractères
    ...
    ?

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    La page de man de la version de wc (GNU coreutils) 6.10 indique...
    ?
    C'est peut-être à cause de l'UTF8. En UTF8, le caractère "é" ne fait qu'un caractère mais s'écrit sur 2 bytes. Bon, j'ai écrit "caractères" dans mon post précédent mais c'était par habitude...

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Ah, d'accord...

    Mais, c'est trompeur, tout de même, ces options courtes, qui ne reprennent pas l'initiale des options longues...

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    merci pour toutes ces réponses : vous me conseillez donc d'utiliser wc directement, style : wc -c "$1" ???
    pour les pipes j'avais bien compris vu ce que tu m'a mis.

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Kuchiki Byakuya Voir le message
    merci pour toutes ces réponses : vous me conseillez donc d'utiliser wc directement, style : wc -c "$1" ???
    Bah pourquoi pas ??? La qualité d'un script ne se mesure pas à la complexité de ses instructions

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bah pourquoi pas ??? La qualité d'un script ne se mesure pas à la complexité de ses instructions
    simplement que je n'avais jamais utilisé wc dans un script vu que c'est le premier script que je tente ^^ on a uniquement utilisé la console en cours
    au fait, cette comande me donne le resultat où ???
    dans le code de retour ou il fait le mettre dans un fichier ?

  11. #11
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    Un petit man bash pourrait t'en dire beaucoup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!/bin/sh
    resultat=`wc -c "$1"`
    echo "resultat = $resultat"
    exit 0

  12. #12
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    ok je vois, tu mets ça dans une variable je vais le lire mais je galere un peu avec le man des fois, je suis pas vraiment bilingue ^^

  13. #13
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    Sur le net il y a plein de traduction du man

    Sur google recherche "man en français"

    ou "man bash en français"

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    ...pas la peine d'aller si loin : man bash

  15. #15
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Kuchiki Byakuya Voir le message
    au fait, cette comande me donne le resultat où ???
    dans le code de retour ou il fait le mettre dans un fichier ?
    Toute commande récupère ses infos dans le clavier et envoie ses résultats à l'écran. Et ce qui fait la force d'unix, c'est qu'on peut lier la sortie de la première à l'entrée de la seconde grace au pipe. Ainsi, la sortie écran de la première passe directement dans l'entrée clavier de la seconde.

    Et une autre force du shell, c'est qu'il peut déléguer tout ce qu'il ne sait pas faire à des commandes externes via les backquottes.
    A ce moment là, il remplace le contenu des backquottes par [ce qui est affiché par la commande placée à l'intérieur]. Ainsi, s'il n'arrive pas à faire un travail (comme compter des caractères) mais qu'il existe une commande qui compte les caractères (wc) et qui, comme toute commande, affichera le résultat à l'écran, suffit au shell de déléguer son travail à ladite commande => `wc -c $1`
    Ensuite, le résultat de l'affichage devant être conservé pour plus tard, suffit de le mettre dans une variable => var=`wc -c $1`

    On en revient toujours au même point: ce qui permet de lier tout ça, c'est que toute commande affiche toujours ses résultats à l'écran.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. petit script lecture fichier en ligne
    Par Eleanor dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/05/2012, 17h22
  2. Calculer taille d'une liste de fichiers dans un Array
    Par Sprsrini dans le forum VB.NET
    Réponses: 1
    Dernier message: 22/07/2011, 12h09
  3. Calculer taille fichier depuis un worfklow
    Par Jc75011 dans le forum Informatica
    Réponses: 2
    Dernier message: 02/11/2009, 11h34
  4. [PHP 4] Petit Script Qui Permet De Supprimer Tous Les Fichiers D'un Dossier
    Par The_Haunted dans le forum Langage
    Réponses: 5
    Dernier message: 03/01/2009, 16h15
  5. script shell: fonction taille fichier/dossier
    Par guluk21 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/05/2008, 19h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo