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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Questions shell

n°1355225
fasten20
Posté le 28-03-2014 à 13:51:11  profilanswer
 

Bonjour à tous,
 
Avec quel commande afficher les fichiers et répertoires du dossier passé en paramètre dans l'ordre décroissant en nombre de caractère ?
 
Exemple :
 
    $ ./script.sh /bin
    plymouth-upstart-bridge
    running-in-container
    dbus-cleanup-sockets
    ntfsdump_logfile
    ntfs-3g.secaudit
    ulockmgr_server
    ntfs-3g.usermap
    vmmouse_detect
 
Comment pourrais-je le faire ?
 
 
Merci d'avance pour vos réponses.

mood
Publicité
Posté le 28-03-2014 à 13:51:11  profilanswer
 

n°1355226
o'gure
Modérateur
Multi grognon de B_L
Posté le 28-03-2014 à 14:29:57  profilanswer
 

Bonjour,
C'est pour un exercice d'école ?


---------------
Relax. Take a deep breath !
n°1355227
fasten20
Posté le 28-03-2014 à 14:40:31  profilanswer
 

Bonjour,
 
Non, même pas je m'exerce tout seul à la maison je débute.
 
J'ai fait des recherches sur google et je vois qu'on peut le faire avec la commande awk mais le problème c'est que c'est assez complexe je trouve ...

n°1355347
Profil sup​primé
Posté le 31-03-2014 à 04:03:17  answer
 

salut,
 
avant de coder, il faut déterminer un algorithme.
 
c'est faisable en bash (pas sh) aussi car il dispose désormais de tableaux associatifs, comme ksh, et awk.

n°1358411
chfr10
Posté le 15-05-2014 à 17:08:12  profilanswer
 


#!/bin/bash
 
 >/tmp/lstemp
 
 find . -maxdepth 1 -print | while read f
    do
       len=${#f}
         if [ "$len" -lt 10 ]
           then
              len=0"$len"
         fi    
      ch=$(echo -n "$len"; echo -n " "; echo "$f" )
      echo "$ch" >> /tmp/lstemp
   done  
 
sort -rn /tmp/lstemp | cut -d " " -f2 | cut -d'/' -f2


 
C'est lourd comme méthode, mais ça marche :o

n°1358433
Tuxerman12
Posté le 16-05-2014 à 07:24:24  profilanswer
 

Pour ajouter des zéros à gauche j'utiliserais plutôt printf:
printf "%03d" $len

n°1358438
Profil sup​primé
Posté le 16-05-2014 à 10:26:00  answer
 

même pas besoin d'un tableau associatif :

Code :
  1. #!/bin/bash
  2. for i in ~/*
  3. do
  4.    l=${#i} f=${i##*/}
  5.    test -z "${ar[l]}" && ar[l]="$f" || ar[l]="${ar[l]}"$'\n'"$f"
  6. done
  7. printf '%s\n' "${ar[@]}"

c'est purement formel, cette liste ne devrait pas pouvoir être utilisée par d'autres commandes pour en parser les noms de fichiers, puisque certains éléments du tableau en contiennent plusieurs :(


Aller à :
Ajouter une réponse
 

Sujets relatifs
Questions diverses sur Linuxboucle shell a 2 variable
[shell] script sauvegarde recuperer nom hote windowsQuestions après installation d'Ubuntu
questions en vrac sur vos applis bureauafficher un ASCII ART en shell via ECHO
Script Shell de Restauration de dossiers Backupés sous Linux de puisMigration Debian 6 vers Centos (questions noob inside)
accélérer l'écécution d'un script shellQuestions Shell
Plus de sujets relatifs à : Questions shell


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