logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 19-02-2024 19:23:44

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

[résolu]traiter les fichiers un a un , sans tri préalable

Hello
j'ai pas trop trouvé comment traité les fichiers d'un cd sans qu'il soit trié au préalable

les fichiers sont du type

Track 1.wav
Track 2.wav
Track 3.wav
Track 4.wav
Track 5.wav
Track 6.wav
Track 7.wav
Track 8.wav
Track 9.wav
Track 10.wav
Track 11.wav
Track 12.wav
Track 13.wav
Track 14.wav
Track 15.wav
Track 16.wav
Track 17.wav
Track 18.wav
 



c'est la que find est super c'est qu'il prend les fichiers dans cette ordre
mais tout devient compliqué si on a plein de variable dans sa boucle, avec find c'est plus possible

une boucle for
premier soucis les fichiers contiennent un espace, il faut donc changé l'IFS (Interne Fiels Separator)
pour que cela fonctionne
oui mais non for effectue un tri sur les fichiers, tout comme la sortie ls

ls  -1 /run/user/1000/gvfs/cdda:host=sr0/


'Track 10.wav'
'Track 11.wav'
'Track 12.wav'
'Track 13.wav'
'Track 14.wav'
'Track 15.wav'
'Track 16.wav'
'Track 17.wav'
'Track 18.wav'
'Track 1.wav'
'Track 2.wav'
'Track 3.wav'
'Track 4.wav'
'Track 5.wav'
'Track 6.wav'
'Track 7.wav'
'Track 8.wav'
'Track 9.wav'
 



le seule moyen un peu tarabiscoté que j'ai trouvé est d'injecter le résultat de ls -UN1 dans une boucle while
(ce qui ne m'autorise plus les redirections dans mon script semble t'il, heureusement que tee est la)

while read -r line
do mes_commandes sur chaque line
done <<<$(ls -UN1 /run/user/1000/gvfs/cdda:host=sr0/|grep .wav)



quel autre syntaxe aurais je pu utiliser?

par curiosité le script en question
https://debian-facile.org/viewtopic.php?id=34524&p=4
message #79

Dernière modification par Croutons (20-02-2024 08:35:14)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#2 19-02-2024 19:56:09

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : [résolu]traiter les fichiers un a un , sans tri préalable

Croutons a écrit :

premier soucis les fichiers contiennent un espace, il faut donc changé l'IFS (Interne Fiels Separator)
pour que cela fonctionne


Plus de 90% des cas de modification de IFS que j’ai eu l’occasion de voir ne sont pas justifiés.

---

Croutons a écrit :

quel autre syntaxe aurais je pu utiliser?


for index in $(seq 1 18); do
    track="/run/user/1000/gvfs/cdda:host=sr0/Track $index.wav"
    ()
done


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#3 20-02-2024 08:34:48

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [résolu]traiter les fichiers un a un , sans tri préalable

merci bien
comme disais Raymond Souplex, bon sang mais c'est bien sur lol
https://fr.wiktionary.org/wiki/bon_sang … t_bien_sûr

j'avais déjà du ouvrir le man de cette commande, mais sans plus

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#4 20-02-2024 13:25:12

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [résolu]traiter les fichiers un a un , sans tri préalable

Sinon, pour un tri plus naturel des nombres :

man sort


[...]
       -V, --version-sort
              tri naturel des numéros (de version) dans le texte
[...]



ls tmp -1


Track 10.wav
Track 11.wav
Track 12.wav
Track 13.wav
Track 14.wav
Track 15.wav
Track 16.wav
Track 17.wav
Track 18.wav
Track 1.wav
Track 2.wav
Track 3.wav
Track 4.wav
Track 5.wav
Track 6.wav
Track 7.wav
Track 8.wav
Track 9.wav
 



ls tmp -1 | sort -V


Track 1.wav
Track 2.wav
Track 3.wav
Track 4.wav
Track 5.wav
Track 6.wav
Track 7.wav
Track 8.wav
Track 9.wav
Track 10.wav
Track 11.wav
Track 12.wav
Track 13.wav
Track 14.wav
Track 15.wav
Track 16.wav
Track 17.wav
Track 18.wav
 


SI ça peut éviter une boucle...

Hors ligne

#5 20-02-2024 13:54:32

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : [résolu]traiter les fichiers un a un , sans tri préalable

Autant -V fonctionne bien ici, autant je pense que pour ce genre de numérotation -n (--numeric-sort) serait plus adapté.

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#6 20-02-2024 14:15:41

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [résolu]traiter les fichiers un a un , sans tri préalable

j'avais pensé a sort

ls /run/user/1000/gvfs/cdda:host=sr0/|sort -n


Track 10.wav
Track 11.wav
Track 12.wav
Track 13.wav
Track 14.wav
Track 15.wav
Track 16.wav
Track 17.wav
Track 18.wav
Track 1.wav
Track 2.wav
Track 3.wav
Track 4.wav
Track 5.wav
Track 6.wav
Track 7.wav
Track 8.wav
Track 9.wav
 



10 est considéré avant 1

quand a l'option -V
c'est ce que fait ls -UN1 il me semble
ce que j'utilise dans mon script dans une boucle while, le script fonctionne

je vais le refaire avec seq et for voir ce que cela donne
comme je ne connais pas la suite de nombre a l'avance j'utiliserais une variable seq (1 $max_fichier)
enfin je tripatouille sous geany je m'amuse bien smile

Dernière modification par Croutons (20-02-2024 14:16:18)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#7 20-02-2024 16:51:08

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : [résolu]traiter les fichiers un a un , sans tri préalable

Bien vu, le préfixe "Track " met le tri en vrac, je ne me rappelais pas de cette spécificité.

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#8 20-02-2024 20:23:32

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [résolu]traiter les fichiers un a un , sans tri préalable

ah en fait j'ai trouvé il faut lui donné le 2éme champ et 1er caractère comme clé
et l'option -n fonctionne

ls -1 /run/user/1000/gvfs/cdda:host=sr0/|sort -n -k2.1


Track 1.wav
Track 2.wav
Track 3.wav
Track 4.wav
Track 5.wav
Track 6.wav
Track 7.wav
Track 8.wav
Track 9.wav
Track 10.wav
Track 11.wav
Track 12.wav
 



man sort a écrit :

-k, --key=DEFCLÉ
              trier selon une clé ; DEFCLÉ indique sa position et son type
DEFCLÉ est de la forme F[.C][OPTS][,F[.C][OPTS]] indiquant les positions de début et de fin, où F est le numéro du champ et C la position du caractère dans le champ ; les deux commencent à partir de 1.
Si non spécifiée, la fin correspond à la fin de la ligne. Si ni -t ni -b ne sont utilisées, les caractères d'un champ sont comptés en commençant à l'espace précédent. OPTS  se  présente  sous  la forme  d'une ou plusieurs options de tri composée d'une lettre parmi [bdfgiMhnRrV], lesquelles écrasent le classement global pour cette clé. Si aucune clé n'est indiquée, la ligne entière est utilisée comme clé. Utilisez --debug pour repérer les utilisations incorrectes de clés.

Dernière modification par Croutons (20-02-2024 20:31:19)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

Pied de page des forums