Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
tirer un fichier au hasard dans un repertoire
Envoyé par: gnunix

Salut a tous,

Je suis débutant sous linux et je cherche a tirer un fichier au hasard dans un repertoire.

voila ce que j'ai fais :

nb_min=1
b=`ls -1 | wc -l` #permet de compter le nombre de fichier dans le repertoire
nb_max=b

N=$((RANDOM%$nb_max+$nb_min)) #renvoie un nombre entre 1 et nb_max
echo $N

je sais alors qu'il se trouve en Nième position. Mon probleme est de le recuperer.

Je ne sais pas si ma methode est la plus simple ou pas...
Merci d'avance


Poste le Tuesday 25 April 2006 12:19:05
Répondre     Citer    
Re: tirer un fichier au hasard dans un répertoire
Envoyé par: nicola

Avec cut, head et tail ? Ou alors cat -n puis grep ?

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Tuesday 25 April 2006 13:22:35
Répondre     Citer    
Re: tirer un fichier au hasard dans un répertoire
Envoyé par: gnunix

en ce que head, tail, cut et autres ca marche pour des fichiers qui sont dans un repertoire??

j'ai peut etre mal expliqué mon probleme, je veux recuperer un fichier en Nieme positions qui se trouve dans un repertoire.
Exemple pour un repertoire Unix contenant 5 fichiers (fich1,fich2,fich3,fich4 et fich5), je veux recuperer un fichier aleatoirement.


Poste le Tuesday 25 April 2006 14:09:35
Répondre     Citer    
Re: tirer un fichier au hasard dans un répertoire
Envoyé par: nicola

Tu peux stocker la sortie de ls (avec une ou deux options bien choisies) dans une variable TRUC=`ls` puis jouer dessus avec sort, tail, cat

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Tuesday 25 April 2006 14:13:50
Répondre     Citer    
Re: tirer un fichier au hasard dans un repertoire
Envoyé par: gnunix

ouai, ca marche bien comme ca.
merci beaucoup pour ton aide

A++

Poste le Tuesday 25 April 2006 15:11:28
Répondre     Citer    
Re: tirer un fichier au hasard dans un répertoire
Envoyé par: nicola

Maintenant que ça marche, je peux te donner une solution, que certains pourraient juger crassouse :
#!/bin/bash

# Ceci peut se faire avec ls -l suivi d’un cut au lieu d’une playlist, qui contient une liste de scripts finissant par .sh
if [ -f playlist.rc ];then
{
    playlist="~/playlist.rc"
}
else
{
    playlist="/etc/playlist.rc"
}
fi

# Calcul du nombre de fichiers, les lignes commentées dans la playlist contiennent quatre dièses
nbfichiers=$(grep -v "####" $playlist | egrep -i "*[[:print:]].sh"|wc -l)

# Choix du numéro
fichierno=$(($RANDOM * $nbfichiers / 32768 + 1))

# Choix du fichier à partir de son numéro (obtenu par cat -n)
fichier=$(grep -v "####" $playlist | egrep -i "*[[:print:]].sh"|cat -n | grep -w "$fichierno" | cut -f2)

echo "And the winner is $fichier"

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Tuesday 25 April 2006 17:54:05
Répondre     Citer    
Re: tirer un fichier au hasard dans un repertoire

une petite solution en deux lignes :


tableau_fichier=( $(ls) ) 
${tableau_fichier[($RANDOM%${#tableau_fichier[@]})]}

--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Wednesday 26 April 2006 17:15:18
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
tirer un fichier au hasard dans un repertoire
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