#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é 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,
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