Re: Shell 2 ou 3 question suites

Page principale

Répondre à ce message
Auteur: Nicolas Tripon
Date:  
À: guilde
Sujet: Re: Shell 2 ou 3 question suites
Quoting Sébastien BRUCHET (sbruchet@???):
> Tout d'abord je tient à vous remercier pour les nombreuses 
> réponses.
> Voici ce que j'ai retenu :
>  ls|wc -w    ou    ls -1|wc -l    pour compter le nombre de 
> fichier dans un répertoire


Ceci listera aussi tous les répertoires dans le répertoire courant ; si
on veut seulement les fichiers du répertoire courant :

find . \( ! -name . -type d -prune \) -o \( -type f -print \)

L'expression à gauche de -o élague les sous-réertoires ; celle de droite
fait l'impression de ce qui ne satisfait pas celle de gauche ; -o et -a sont
semblables à || et && en C : dès que le résultat final est connu, le reste
de l'expression est court-circuité.

> Parcontre pour acceder au 3 fichiers par ordre
> alphanumérique d'un répertoire j'ai été obligé de faire une
> boucle...
> explication :
> Voici le résultats d'un ls
> 1.fichier
> 2.fichier
> 3.fichier
> 4.fichier
>
> Je voulais avoir comme retour le nom du 3eme fichier cad 
> 3.fichier donc
> FILES=`ls -1`
> J=1
> for N in $FILES
> do
>  if test $J -eq 3
>   then
>    nm=$N
>  fi
>  J=`expr $J + 1`
> done
> echo $nm

>
> Je n'ai pas trouver de solution plus simple
> Une instruction proposé fut
> ls |cut -f 3
> Mais cela ne marchait pas mais si on faissait un ls -C
> comme proposé dans un autre mail qui prevennait d'ailleurs
> des résultats que j'obtenu.
> Je sais il doit yavoir des moyens d'optimiser mais enfin
> bon!!!


Si ls -C ne présente pas les informations dans le format souhaité, il ne
faut pas l'utiliser. Pour revenir au problème de comptage, si chaque ligne
contient un seul fichier :

ls | head -3 | tail -1
ls | awk 'NR==3 {print $0}'