Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1030 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Taille des fichiers supérieure à une taille spécifique ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Taille des fichiers supérieure à une taille spécifique ?

n°1986994
Hello87
Posté le 23-04-2010 à 14:45:40  profilanswer
 

Bonjour,
 
Est-ce possible d'afficher la liste de tout les fichiers normaux d'un répertoire dont la taille est supérieure à une taille définie, en sachant que le nom du répertoire ainsi que la taille spécifique sont introduit en argument ?
 
Parce que je ne vois pas du tout comment faire ><
 
J'ai écris ce code mais il ne fonctionne pas :
 

Code :
  1. #bin!/bash
  2. echo "Quel repertoire à analyser ?"
  3. read repertoire
  4. for ligne in repertoire
  5. do
  6. if [ `echo $ligne | cut -d ' ' -f5` -lt 500 ]
  7. then
  8. echo  $ligne
  9. fi
  10. done


 
Il me dit comme erreur [: repertoire est attendu comme un nombre entier comme expression  
 
Je vous remercie d'avance ^^

Message cité 1 fois
Message édité par Hello87 le 23-04-2010 à 15:17:54
mood
Publicité
Posté le 23-04-2010 à 14:45:40  profilanswer
 

n°1987091
art_dupond
je suis neuneu... oui oui !!
Posté le 23-04-2010 à 16:18:49  profilanswer
 

un truc du genre

Code :
  1. DIRECTORY=$1
  2. SIZE=$2
  3. ls -l $DIRECTORY | egrep ^- | awk '{ if($5 > '$SIZE') print $9}'
 

egrep ^- prend les lignes qui commencent par "-" (pas les répertoires (d), pas les liens (l))

 


edit: sinon avec find tu peux aussi chercher des fichiers de type fichier avec un paramètre pour la taille (mais je ne sais pas si on peut dire "> taille" )
edit2: peut-être avec find -size +500


Message édité par art_dupond le 23-04-2010 à 16:28:36

---------------
oui oui
n°1987108
Hello87
Posté le 23-04-2010 à 16:37:55  profilanswer
 

J'ai testé ton code mais il ne fonctionne pas :s
 
Ne connaissant pas la commande awk, je ne vois pas où est l'erreur car il me dit : awk line 1 syntaxe error at or near ) ^^


Message édité par Hello87 le 23-04-2010 à 17:04:05
n°1987128
art_dupond
je suis neuneu... oui oui !!
Posté le 23-04-2010 à 17:21:35  profilanswer
 

SIZE vaut bien quelque chose ? (t'as remplacé le $2 par une valeur ?)


---------------
oui oui
n°1987131
Hello87
Posté le 23-04-2010 à 17:25:51  profilanswer
 

Non j'ai juste recopier ton code tel quel pour le tester.


Message édité par Hello87 le 23-04-2010 à 17:28:16
n°1987192
mrbebert
Posté le 23-04-2010 à 22:15:16  profilanswer
 

A mon avis, le $SIZE dans les simple quotes, il va pas fonctionner comme voulu [:figti]  
 
Plutot quelque chose comme ca :

DIRECTORY=$1
SIZE=$2
ls -l $DIRECTORY | egrep ^- | awk -v size=$SIZE '{ if($5 > size) print $9; }'


Ou même (quitte à faire du awk, autant l'utiliser pleinement) :

DIRECTORY=$1
SIZE=$2
ls -l $DIRECTORY | awk -v size=$SIZE '/^-/ { if($5 > size) print $9; }'

(faudrait juste vérifier que c'est bien -v pour passer des paramètres au script awk)

Message cité 1 fois
Message édité par mrbebert le 23-04-2010 à 22:19:41
n°1987217
art_dupond
je suis neuneu... oui oui !!
Posté le 24-04-2010 à 06:24:04  profilanswer
 

mrbebert a écrit :

A mon avis, le $SIZE dans les simple quotes, il va pas fonctionner comme voulu [:figti]  


il est hors des quotes justement :o


---------------
oui oui
n°1987303
mrbebert
Posté le 24-04-2010 à 20:34:20  profilanswer
 

Ah ouais :ouch:  
J'avais pas pensé à ce genre d'astuce :pt1cable:

n°1987369
Sve@r
Posté le 25-04-2010 à 13:46:10  profilanswer
 

Hello87 a écrit :

J'ai écrit ce code mais il ne fonctionne pas :
 

Code :
  1. #!/bin/bash
  2. echo "Quel repertoire à analyser ?"
  3. read repertoire
  4. for ligne in repertoire
  5. do
  6. if [ `echo $ligne | cut -d ' ' -f5` -lt 500 ]...


 
Il me dit comme erreur [: repertoire est attendu comme un nombre entier comme expression


Tu cherches à traiter le champ n° 5 de ta ligne comme si la ligne contenait le résultat de "ls -l".
Or ta ligne contient simplement le mot "repertoire". Si tu veux que ta ligne contienne "ls -l", faut le dire qqpart...
 

Code :
  1. #!/bin/bash
  2. echo "Quel repertoire à analyser ?"
  3. read repertoire
  4. for ligne in `ls -l repertoire`
  5. do
  6. if [ `echo $ligne | cut -d ' ' -f5` -lt 500 ]...


Message édité par Sve@r le 08-05-2010 à 01:01:04

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1988785
Kerrozen
To be or not to be ... cool ..
Posté le 29-04-2010 à 16:05:37  profilanswer
 

Euh.... pour recentrer le débat, la commande FIND ne ferait-elle pas le boulot ?
 
localisation = premier argument
taille = option SIZE ( ! attention, il faut convertir la taille en block : 1 block = 512 octets)
fichier normal = option -type f
 
Donc tu aurais une commande du genre :
 
find /mon_repertoire -type f -size 2000 (exemple des fichiers de plus d'1 MO => 512octets * 2 * 1000 )

Message cité 1 fois
Message édité par Kerrozen le 29-04-2010 à 16:06:09

---------------
En programmation, quand t'as un problème et qu'il n'y a que deux solutions valides, seule la troisième fonctionne !
mood
Publicité
Posté le 29-04-2010 à 16:05:37  profilanswer
 

n°1990451
Sve@r
Posté le 05-05-2010 à 13:52:07  profilanswer
 

Kerrozen a écrit :

Euh.... pour recentrer le débat, la commande FIND ne ferait-elle pas le boulot ?


 
Si si tout à fait. Elle fera le boulot bien mieux et bien plus rapidement qu'un script. Toutefois ce script avait tellement d'erreur de conception (erreurs qui peuvent se reproduire dans d'autres scripts) que j'ai préféré (à titre d'exemple uniquement) indiquer en quoi le script était mal conçu...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1991317
Kerrozen
To be or not to be ... cool ..
Posté le 07-05-2010 à 16:55:04  profilanswer
 

RoooAAhaAHAHA qu'est-ce qu'il est méchant ce Sve@r ^^


---------------
En programmation, quand t'as un problème et qu'il n'y a que deux solutions valides, seule la troisième fonctionne !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Taille des fichiers supérieure à une taille spécifique ?

 

Sujets relatifs
[UNIX] contourner la taille maximum d'un pipechanger la taille du champ d'une table
Question sur les fichiers[batch] liste des fichiers d'un disque par répertoire
[C#] Service Windows vérification fichiers périodique et alerte mailLinker sur la lib générique et pas sur une version spécifique
Ouverture de fichiersStockage de données : BDD/Fichiers/En mémoire
Taille header variable. 
Plus de sujets relatifs à : Taille des fichiers supérieure à une taille spécifique ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR