Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Tri Bash
Envoyé par: Ubuntu

voilà j'ai un script bash qui permet de récupérer la liste des fichiers contenus dans un répertoire. Cette liste est trier par défaut dans l'ordre alphabétique.

Script bash :
i=0
for fichier in `ls $1`
do
    tabfic[$i]=$fichier
    ((i++))
done



LIMITE=0
while [ "$i" -gt "$LIMITE" ] 
do

	echo "essai: " ${tabfic[$i]}
	i=`expr $i - 1`

done

je souhaiterai avoir la liste des fichiers dans l'odre alphabétique inverse.

exemple:
repertoire test contient 3 fichiers a b c:
je voudrai récupérer dans le tableau tabfic en bash la liste suivante: c b a.

Poste le Wednesday 27 June 2007 10:50:53
Répondre     Citer    
Re: Tri Bash
Envoyé par: Fanch

ls -r ... :chef:

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Wednesday 27 June 2007 12:23:51
Répondre     Citer    
Re: Tri Bash
Envoyé par: oudoubah

Citation
Ubuntu
for fichier in `ls $1`
do
tabfic[$i]=$fichier
((i++))
done

Si un de tes fichiers contient un espace, tu auras un problème.
Pour y palier, il est préférable d'utiliser une boucle while :
ls -r $1 | while read fichier ; do
    tabfic[$i]=$fichier
    ((i++))
done


Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Wednesday 27 June 2007 13:11:28
Répondre     Citer    
Re: Tri Bash
Envoyé par: Sve@r

Citation
Ubuntu
voilà j'ai un script bash qui permet de récupérer
la liste des fichiers contenus dans un répertoire.
Cette liste est trier par défaut dans l'ordre
alphabétique.

Script bash :
i=0
for fichier in `ls $1`
do
tabfic[$i]=$fichier
((i++))
done



LIMITE=0
while [ "$i" -gt "$LIMITE" ]
do

echo "essai: " ${tabfic[$i]}
i=`expr $i - 1`

done

je souhaiterai avoir la liste des fichiers dans
l'odre alphabétique inverse.

exemple:
repertoire test contient 3 fichiers a b c:
je voudrai récupérer dans le tableau tabfic en
bash la liste suivante: c b a.


Comme cela a été dit, l'option "-r" intégrée à la commande "ls" t'inverse le résultat. Mais si cette option n'avait pas été présente, tu aurais quand-même pu y arriver en utilisant la commande "sort" =>
ls |sort -r

Principe d'Unix => tu as tout un tas de modules qui font tout un tas de petites actions et tu peux chaîner ces modules par des pipes pour obtenir de grands résultats...

L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Thursday 28 June 2007 14:10:06
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Tri Bash
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons