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

Shell et commandes GNU Discussion :

Taille des fichiers recherchés


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Par défaut Taille des fichiers recherchés
    Bonjour,

    Je souhaiterais créer un script capable de me donner la taille totale des fichiers correspondant à un critère. J'explique pourquoi: j'utilise un système de corbeille, et tous les soirs, je vide une partie de la corbeille en fonction de certaines règles, et j'aimerai connaitre la taille des fichiers correspondant à ces règles.
    Pour supprimer, j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /.../RecycleBin/  <regles>  -exec  rm -f {} \;
    Celà permet de supprimer les fichiers repérés par find. Mais comment additionner la taille de ces fichiers? Dois-je utiliser une commande annexe et un pipe? faire la même recherche avec un "ls -l" à la fin et une commande qui filtre la taille et une autre commande qui additionne?

    Merci.
    Benz

  2. #2
    Membre chevronné Avatar de Pilru
    Homme Profil pro
    Dev ASP.NET/jQuery ; Admin ORACLE
    Inscrit en
    Septembre 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev ASP.NET/jQuery ; Admin ORACLE

    Informations forums :
    Inscription : Septembre 2007
    Messages : 491
    Par défaut
    La réponse est dans : man find

  3. #3
    Membre confirmé
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Par défaut
    J'ai déjà cherché, je viens d'y refaire un tour et je n'ai pas trouvé la réponse à MA question.
    J'ai bien vu l'option -size, mais elle permet de chercher un fichier dont on connait la taille, pas de connaitre la taille d'un fichier qu'on cherche.

    A moins que je l'ai loupée. Quelle est cette option?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Par défaut
    Je pense qu'avec une boucle et la commande il y'a moyen de s'en sortir.

  5. #5
    Membre confirmé
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Par défaut
    J'ai déjà essayé un truc comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /.../ <regles>  -exec du -k
    Ca ne donne rien: chaque exécution de "du" est indépendante et on a les tailles indépendamment.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /.../ <regles>  |  du -k
    Mais "du" n'accepte pas l'entrée de flux (pipe), et s'exécute à la fin du "find" sur le répertoire courant.

    J'ai pensé à un truc bricolé avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /.../ <regles>  |  ls -l
    Ca liste les fichiers avec leur taille en début de ligne, de cette façon, on peut essayer, avec une autre commande, de couper la taille en octet et avec encore une autre, de faire une addition. Mais là, je m'y connais pas assez! J'ai pas ces commandes dans mon tiroir...
    Des suggestions??

    Merci.
    Benz

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Par défaut
    Un truc comme ca ne t'irait pas ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    nb=0
    result=0
     
    for nb in $( find . | du | cut -f1 )
    do
     #	nb=$(du -k $fic)
       echo "nb = $nb"
    	 result=$(( $result + $nb ))
    done 
     
    echo "result=$result ko";
    Chez moi je du prend le pipe, mais j'suis en ksh

  7. #7
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Citation Envoyé par dj_benz Voir le message
    JJ'ai bien vu l'option -size, mais elle permet de chercher un fichier dont on connait la taille, pas de connaitre la taille d'un fichier qu'on cherche.
    Citation Envoyé par man find
    find / \
    \( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
    \( -size +100M -fprintf /root/big.txt %-10s %p\n \)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    find <regles> -printf "%s+" > file
    echo "0" >> file
    bc < file

  8. #8
    Membre confirmé
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Par défaut
    Ah, ben voilà la commande que je cherchais: "bc"! Et la fameuse option "-printf "%s" ". Merci D[r]eadLock!

    Mon script ressemble maintenant à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SIZEFILE=/root/tmp/totalsize.txt
    echo > $SIZEFILE
     
    find /.../ <regles> -printf "%s+" >> $SIZEFILE
    echo 0 >> $SIZEFILE
     
    echo "Total des fichiers supprimés: `bc < $SIZEFILE` octets"
    rm -f $SIZEFILE
    Mais je rencontre un problème: la commande "find" liste aussi les répertoires qui correspondent aux règles (alors que je ne supprime pas les répertoires de la corbeille). J'ai donc dans mon résultat autant de fois 4096 que de répertoires (non supprimés) ce qui me fausse le calcul.
    Comment dire à "find" de ne pas lister les répertoires?

    [EDIT] Je viens de trouver: il faut simplement utiliser l'option de "find": -type f, et ça ne liste que les fichiers. Facile! [/EDIT]

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

Discussions similaires

  1. [9i] taille des fichiers data
    Par muslem dans le forum Oracle
    Réponses: 7
    Dernier message: 20/12/2005, 10h55
  2. [Redo log] : augmenter la taille des fichiers
    Par user_oracle dans le forum Oracle
    Réponses: 3
    Dernier message: 29/11/2005, 19h49
  3. Taille des fichiers limitée à 4Go
    Par alain sayagh dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 13/06/2005, 17h58
  4. Réduire la taille des fichier .LDF ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 31/03/2005, 11h48
  5. Taille des fichiers Interbase et Firebird
    Par Equus dans le forum Débuter
    Réponses: 5
    Dernier message: 21/03/2005, 15h50

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