GouxMathieu a écritfind -type f -iname "*\.mp3" -print0 | sort -R | head -n 25 | xargs -I{} -0 cp --parents {} /home/user/dossier/cible
Mais cela me faisait un aléatoire bizarrement fait... C'est vrai que le traitement un peu long, mais cela fonctionne.
Un aléatoire bizarre ??? C'est le but non 🙂
Rechercher tous les fichiers mp3 à chaque fois n'est pas la meilleurs soluce, ca prends du temps. Il serait préférable, je pense, de travailler avec un fichier texte que tu réactualises quand tu ajoutes des fichiers.
GouxMathieu a écritJ'ai un peu regardé man sort et man head pour voir s'il y avait un argument à mettre pour contourner ce problème de xargs, mais je n'ai encore rien trouvé...
Le problème ne vient pas de sort ou head, mais de xargs (tu dois avoir des fichiers avec des apostrophes). Je n'ai pas trop le temps d'essayer, mais si mes souvenirs sont bon, il suffit d'entourer la sortie de find pas des guillemets pour ne plus avoir de problème.(si l'option -O de xargs de fonctionne pas)
Donc, qd tu crée ton fichier_sauvegarde avec find; un truc du genre:
find -type f -iname "*\.mp3" -printf "\"%h%f\"\n" > /home/user/fichier_sauvegarde.txt
Te reste plus qu'a travailler sur le fichier_sauvegarde.txt
GouxMathieu a écritD'ailleurs, en passant, je déteste ne rien comprendre à ce que je rentre en console ^^ Autant pour le premier script je comprends tout (et je m'en veux de ne pas avoir trouvé moi-même :rolleyes: mais il faut dire que je débute), autant pour le second (deuxième version), je ne saisis pas tout... Pourrais-tu m'expliquer un peu comment ça marche AnsuzPeorth, en mp pour ne pas polluer le topic si besoin, cela pourrait toujours m'être utile plus tard 😉
Il n'y a rien de special.
xargs -I{} → permet de 'rappeler' le fichier en entré par {}
l'option --parents de cp copie l'arborescence
sort et head, tu dois connaitre !
Comme xargs posait problème, en passant par la boucle while on contourne facilement ce problème (si tu travailles sur un fichier, le temps gagné par xargs n'est pas trés significatif, sauf bien sur si tu fais un aléatoire de 10 000 titres 🙂)
while read ligne
do
echo $ligne
done
=
while read ligne; do echo $ligne; done
=
xargs -I{} echo {}
#xargs echo suffirait danc ce cas