[script] un petit peu de shell unix

un petit peu de shell unix [script] - Programmation

Marsh Posté le 05-03-2002 à 10:56:41    

Il y a troi ans pendant mon DUT d'info j'avais fait un petit script qui listait tous les fichiers "core" d'une arborescence pour pouvoir ensuite les effacer. Mais il y'a une chose que j'ai oublié c'est le nom de la commande qui traitait le resultat de "ll".
 
Cette commande permettait de separer les differents element de la ligne pour pouvoir recuperer la taille et le nom de fichier par exemple.
 

Code :
  1. "
  2. total 2246
  3. -rw-------   1 darkoli gb        778560 Mar  4 14:56 core
  4. -rwxr--r--   1 darkoli gb           182 Mar  4 16:39 cpl
  5. -rwxrwxrwx   1 darkoli gb        111844 Mar  4 16:39 toto
  6. -rw-r--r--   1 darkoli gb         88927 Mar  4 16:34 toto.c
  7. -rw-rw-rw-   1 darkoli gb          2112 Mar  4 16:39 toto.mk
  8. -rw-rw-rw-   1 darkoli gb        127484 Mar  4 16:39 toto.o
  9. "


 
en parametre de la commande le lui filais une ligne et si mes souvenirs sont bons elle placait chaque element dans les variables $1.. $n comme si c'etait les parametres du script. (colonne 5 et 9 à recuperer).
 
C'est quoi donc le nom de cette fonction ?(ksh)

Reply

Marsh Posté le 05-03-2002 à 10:56:41   

Reply

Marsh Posté le 05-03-2002 à 10:58:41    

desole mes souvenirs datent aussi de l'iut (5ans) mais ce n'est pas sed qu'il faut utiliser ?


---------------
All we need is a soul revolution
Reply

Marsh Posté le 05-03-2002 à 11:03:55    

kayasax a écrit a écrit :

desole mes souvenirs datent aussi de l'iut (5ans) mais ce n'est pas sed qu'il faut utiliser ?  




 
Ben je vais voir mais ca me dit rien du tout !!!

Reply

Marsh Posté le 05-03-2002 à 11:04:37    

ya 1 solution toute simple :  
 
find . -name core -exec rm \{\} \;
 
ou  
 
find . -name core | xargs rm

Reply

Marsh Posté le 05-03-2002 à 11:06:37    

sed, awk, grep ?
 
hihi :p

Reply

Marsh Posté le 05-03-2002 à 11:11:12    

impulse a écrit a écrit :

sed, awk, grep ?
 
hihi :p  



 
 :D ha ben g encore des bons restes ... :D


---------------
All we need is a soul revolution
Reply

Marsh Posté le 05-03-2002 à 11:29:09    

Le find est de très loin la meileure solution.....
 
Perso, dans mon .bash_aliases, y'a ça :
 
function beurk() {
find ~ ! -type d \( -name ".#*" -o -name "*~" -o -name ".*~" -o -name "#*#" -o -name "*.aux" -o -name "*.toc" -o -name ".saves-*" -o -name ".rhosts" -o -name "core" -o -name ".*.errors" \) -print -exec rm {}  
\;

Reply

Marsh Posté le 05-03-2002 à 12:03:09    

Oui mais moi je veux pas faire de find !!!
 
J'ai mon script qui parcours l'arborescence, simplement j'aimerais pouvoir indquer la taille totales occupees pr les fichier "core", donc j'avais pense faire un  `ll | grep core` pour chaque repertoire et ensuite recuperer la taille qui est le 5° element. (et non the fifth element  :D). Mais avec cut ca ne marche pas tres bien car s'il y a plusieurs espaces ' ' il considere qu'il y a des champs vides !!!
 
Donc je vais voir avec sed mais si vous aviez les parametres à filer avec cce serait sympa.

Reply

Marsh Posté le 05-03-2002 à 14:14:20    

Pourquoi, tu veux pas faire de find??? Ca marche nickel, et sans doute beaucoup plus vite que ton script qui parcourt l'arborescence!!  
 
Bon, sinon, pour calculer la taille d'un fichier, y'a mieux que ll...Y'a du....dont le boulot est de calculer la taille d'un fichier...

Reply

Marsh Posté le 05-03-2002 à 18:03:44    

gfive a écrit a écrit :

Pourquoi, tu veux pas faire de find??? Ca marche nickel, et sans doute beaucoup plus vite que ton script qui parcourt l'arborescence!!  
 
Bon, sinon, pour calculer la taille d'un fichier, y'a mieux que ll...Y'a du....dont le boulot est de calculer la taille d'un fichier...  




 
Oui c'est aussi une solution !!!
desole mais du -b n'est pas accepté !!!
Donc je vais faire un wc -c core et pis c'est tout (bon c'est violent mais y'a que ca qui marche sur ce shell pourri (ksh) !!!)

 

[jfdsdjhfuetppo]--Message édité par darkoli--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 05-03-2002 à 18:03:44   

Reply

Marsh Posté le 06-03-2002 à 10:37:42    

Bon pour separer les elements d'une ligne tres facilement voici une solution simple !!!
 
function separer {
  echo $5
}
 
toto=`separer 1 2       3 4 5 6`
 
echo $toto
 
et dans toto se trouve le 5° element !!!

Reply

Marsh Posté le 06-03-2002 à 10:59:41    

darkoli a écrit a écrit :

Bon pour separer les elements d'une ligne tres facilement voici une solution simple !!!
 
function separer {
  echo $5
}
 
toto=`separer 1 2       3 4 5 6`
 
echo $toto
 
et dans toto se trouve le 5° element !!!  




 
Il est fou, lui!! Non mais ça va pas, alors qu'il y a des outils tout faits pour ça! :D
 
Déjà :  
 
toto=`echo $line | awk '{print $5}'`  
 
te fait la même chose...Et ça marche aussi si tes champs sont séparés par autre chose que des espaces : avec des virgules, par exemple :  
 
toto=`echo $line | awk ' BEGIN {FS=","} {print $5}'`
 
Et on doit pouvoir encore faire mieux avec des commandes shell que je connais pas...

Reply

Marsh Posté le 06-03-2002 à 17:10:01    

gfive a écrit a écrit :

 
 
Il est fou, lui!! Non mais ça va pas, alors qu'il y a des outils tout faits pour ça! :D
 
Déjà :  
 
toto=`echo $line | awk '{print $5}'`  
 
te fait la même chose...Et ça marche aussi si tes champs sont séparés par autre chose que des espaces : avec des virgules, par exemple :  
 
toto=`echo $line | awk ' BEGIN {FS=","} {print $5}'`
 
Et on doit pouvoir encore faire mieux avec des commandes shell que je connais pas...  




 
Je sais qu'on doit pouvoir faire mieux, je l'avais fait il y a trois ans mais je ne m'en souviens plus !!!

Reply

Marsh Posté le 06-03-2002 à 17:22:54    

Ah ouais, c comme moi avec Perl, alors!! :D:D

Reply

Marsh Posté le 06-03-2002 à 17:58:14    

gfive a écrit a écrit :

Ah ouais, c comme moi avec Perl, alors!! :D:D  




 
Sauf que moi du perl j'en ai jamais fait !!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed