|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
Je dois réaliser un script me permettant de compter le nombre de sous dossiers et de fichiers à l'intérieur d'un même dossier et afficher ensuite leur taille (uniquement pour les fichiers).
Pour ce qui est du comptage des sous-dossiers et fichiers j'y suis parvenu, mais je n'arrive pas a afficher correctement l'espace disque occupé. Je vais essayer de simplifier pour que ce soit plus clair: J'ai un dossier "/var/www/http/xxx" contenant un sous répertoire "/var/www/http/xxx/yyy" et plusieurs fichiers: -test.java -test.php -test.mp3 Le sous répertoire "/var/www/http/xxx/yyy" contient lui même : -test2.php -test2.mp3 Je recherche uniquement les fichiers n’étant pas .php ou .java. Je fais donc un find /var/www/http/xxx -type f ! -iname "*.php" -a ! -iname "*.java" qui me renvoie comme résultat : /var/www/http/xxx/test.mp3 /var/www/http/xxx/yyy/test2.mp3 J'ai essayé de décomposer en 2 parties : une première variable contenant les noms des fichiers correspondant à ma recherche (variable1=`find /var/www/http/xxx -type f ! -iname "*.php" -a ! -iname "*.java"`) Puis un du -bch sur cette précédente variable, cela marche mais uniquement lorsque ma recherche a retourné un résultat, si aucun fichier correspondant à mes critères n'est trouvé, cela exécute un du -bch sur le dossier dans lequel je me trouve (ce qui ne m’intéresse pas du tout). On m'a parlé de l'option -exec à placer dans la commande find mais je ne trouve cependant pas la bonne syntaxe. J’espère que vous pourrez m'aider. Je vous en remercie d'avance. |
|
|
10
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 538 ![]() |
Code :
find /var/www/http/xxx -type f ! -iname "*.php" -a ! -iname "*.java" | xargs ls -l | awk '{print $5}' |
|
|
10
|
|
|
#3 | ||
|
Membre habitué
![]() Étudiant Inscription : août 2011 Messages : 46 ![]() |
Tu as essayé un :
Code :
__________________
Carpe Diem |
||
|
|
11
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
Lorsque j’exécute ta commande, j'obtiens un résultat du type :
4096 4096 4096 4096 Pourrais-tu me la décomposer et me la détailler pour que je puisse l'adapter à mes besoins ? PS: J'ai oublié de préciser que le résultat doit être l'addition des tailles de tous les fichiers correspondants Merci |
|
|
10
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
Pour frp31:
Cela ne semble pas correpondre a mes attentes, en effet la commande : Code :
find /var/www/http/xxx -type f ! -iname "*.php" -a ! -iname "*.java" | xargs ls -l |
|
|
10
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Code :
find /var/www/http/xxx -type f ! -iname "*.php" -a ! -iname "*.java" -exec du {} \; | awk '{ SUM += $1} END { print SUM }'
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
30
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
Un grand merci à toi zipe31.
Cependant est ce possible d'afficher le resultat avec l'unité (k, m, g) comme le ferait l'option -h de la commande du ? |
|
|
00
|
|
|
#8 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
Code BASH :
|
||
|
|
40
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
Merci N_BaH.
Mais n'est ce pas possible d'afficher le resultat de la commande dans un format plus lisible ? de type 1Go au lieu de 1 073 741 824 octets ?. |
|
|
01
|
|
|
#10 | ||
|
Membre actif
![]() Inscription : août 2011 Messages : 44 ![]() |
Bonjour,
si tu as la commande stat et bash >=4 : Code :
|
||
|
|
20
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
Merci, je vais tester ca.
|
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
Il me semble qu'il manque une parenthese quelque part, je la rajoute ou?
|
|
|
10
|
|
|
#13 |
|
Membre actif
![]() Inscription : août 2011 Messages : 44 ![]() |
c'est corrigé.
|
|
|
10
|
|
|
#14 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
J'obtiens ce message d'erreur
./taille2: command substitution: line 3: syntax error near unexpected token `(' ./taille2: command substitution: line 3: `shopt -s globstar extglob; stat -c '+%s' /var/java/dev2/**/!(*.php|*.java)' Merci de ton aide. |
|
|
10
|
|
|
#15 | |||
|
Membre actif
![]() Inscription : août 2011 Messages : 44 ![]() |
Citation:
arg, désolé ... je suis allé un peu vite en besogne l'option extglob n'est pas considérée active au moment de la lecture de la ligne et cela génère donc cette erreur de syntaxe. Il faut donc sortir l'activation de l'option : Code :
|
|||
|
|
10
|
|
|
#16 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
J'ai encore un message d'erreur.
bash: ./taille2: /bin/bash^M: bad interpreter: Aucun fichier ou répertoire de ce type Merci pour ton aide. |
|
|
00
|
|
|
#17 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
ouaip, ça c'est parce que tu as écrit ton script sur Windows, il faut le convertir au format UNIX. |
|
|
00
|
|
|
#18 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
Merci beaucoup,
cela semble fonctionner mais j''obtiens tout de meme un message d'erreur: ./taille2: line 3: shopt: globstar: invalid shell option name 0.0003870251 Gb Merci |
|
|
00
|
|
|
#19 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
t'es pas en BASH >=4 ?
dans un terminal, que répond echo $BASH_VERSION ? |
|
|
00
|
|
|
#20 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2011 Messages : 23 ![]() |
Ceci:
3.2.39(1)-release |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com