Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/11/2014, à 03:56

Melikogreter

[Résolu] find : retenir le premier résultat

Bonjour à tous,

J'ai cherché, cherché, mais ça n'a rien donné smile Je reste un parfait débutant dans les scripts shell et mon problème est le suivant : j'aimerais avec la commande find dans une boucle obtenir le premier résultat à chaque tour, en pratique récupérer des fichiers musicaux et les classer un par un dans un dossier différent, par exemple faire un boucle du genre :

#! /bin/sh
a=1
while [ "$a" < 524 ]; do
mkdir /home/classer/d"$a"
find /home/musiques_partitions/ \( -name '*.wav' -o -name '*.m4a' \) -exec [premier résultat à mettre dans] /home/classer/d"$a"/ \;
a=$((a+1))
done
exit 0

Voilà j'espère avoir été clair dans mes explications !

Merci à tous pour vos contributions !

Dernière modification par Melikogreter (Le 13/11/2014, à 06:37)

Hors ligne

#2 Le 13/11/2014, à 04:17

bobe

Re : [Résolu] find : retenir le premier résultat

Non, je comprends pas trop ce que tu cherches à faire, mais là, comme ça, ce serait pas plus simple de boucler sur ce que retourne find ? genre :

a=1
find /home/musiques_partitions/ \( -name '*.wav' -o -name '*.m4a' \) | while read filename; do
    mkdir "/home/classer/d$a"
    mv $filename "/home/classer/d$a"
    a=$((a+1));
done

exit 0

pas testé.

Hors ligne

#3 Le 13/11/2014, à 06:36

Melikogreter

Re : [Résolu] find : retenir le premier résultat

Ah merci ! Je suis vraiment content que ça ait marché ! En effet, ça peut paraître bête, mais je ne connaissais pas la commande read, donc j'ai potassé un peu sur le sujet, puis j'ai testé ton code et c'est exactement ce que je voulais faire. Eh oui, comme je l'ai dit, je reste débutant, mais au moins j'ai obtenu ce que je voulais, merci encore.

En revanche un fichier a échappé au script car il contenait un espace et des parenthèses, j'imagine que le problème vient de '*.wav' et '*.m4a', est-ce qu'il aurait fallu mettre des double-guillemets ? Je ne vais pas retester mais ce serait juste pour savoir.

Hors ligne

#4 Le 13/11/2014, à 07:17

pingouinux

Re : [Résolu] find : retenir le premier résultat

Bonjour,

Melikogreter a écrit :

En revanche un fichier a échappé au script car il contenait un espace et des parenthèses

Remplace

    mv $filename "/home/classer/d$a"

par

    mv "$filename" "/home/classer/d$a"

Édité

Dernière modification par pingouinux (Le 13/11/2014, à 07:26)

Hors ligne

#5 Le 13/11/2014, à 08:12

Melikogreter

Re : [Résolu] find : retenir le premier résultat

pingouinux -> merci, je viens de comprendre, c'est assez logique en fait, même si au premier abord et quand on n'a pas l'habitude on n'y pense pas forcément.

Hors ligne