#1 Le 21/09/2021, à 12:05
- Sciensous
clic droit, script et liste de fichiers
hello pas simple de faire un bon titre et de rechercher sur le net; donc je fais appelle au forum:
quand on clique droit sur une liste de fichiers en graphique, pour lancer un script l'option %F permet d'avoir cette liste entre guillemets simples; les fichiers peuvent avoir des espaces
du genre: 'fichier1' fichier 2' 'fichier 3 et autre'
question: dans le script (sh) lui-même, y-a-t-il une méthode simple de faire une boucle sur cette liste ? (autrement que recherche des ' est introduction de sauts de ligne ou autre combines de ce type)
car avec un for,les blancs de fichiers coupent le nom
et avec des " tout est pris
merci de votre aide![]()
antiX 19 (Debian Buster) et (L)Ubuntu focal 20.04
( sous LXDE et gnome-shell )
Hors ligne
#2 Le 21/09/2021, à 12:59
- ar barzh paour

Re : clic droit, script et liste de fichiers
? est-ce possible comme ça
#!/bin/sh
liste="'fichier1' 'fichier 2' 'fichier 3 et autre'"
( IFS="'" ; for f in $liste ; do echo $f ; done )le résultat
fichier1
fichier 2
fichier 3 et autreDernière modification par ar barzh paour (Le 21/09/2021, à 13:01)
PC : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz + 4GiB RAM DDR4-2400 Ubuntu 20.04 , 18.04 22.04 (test)
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 20.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#3 Le 21/09/2021, à 22:26
- kamaris

Re : clic droit, script et liste de fichiers
Tu es censé pouvoir utiliser %F et %U directement, sans mettre de guillemets autour :
for f in %F; do echo "$f"; doneTu peux remplacer echo par ce que tu veux.
Dernière modification par kamaris (Le 21/09/2021, à 22:27)
Hors ligne
#4 Le 21/09/2021, à 22:57
- Hizoka

Re : clic droit, script et liste de fichiers
Je confirme, pas de " autour malgré tous les exemples sur le net...
Sinon, %F et %U te renvoient une liste d'urls considérée comme 1 seule url...
L'idée est d'appeler ton script depuis le fichier desktop :
exec=mon_script %FPuis de traiter les url dans ton script
for f in "${@}"; do echo "$f"; doneDernière modification par Hizoka (Le 21/09/2021, à 22:58)
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#5 Le 22/09/2021, à 08:25
- Sciensous
Re : clic droit, script et liste de fichiers
merci pour toutes ces réponses, je vais essayer et vous mettrai un retour.
(il me semble avoir essayé la boucle directement mais ça ne marchait pas: coupure à chaque espace)
je ne sais pas si j'ai assez insisté mais je ne suis pas encore passé au bash mais suis resté en sh ![]()
sinon j'étais parti sur un shopt
et avais oublié le fameux IFS ![]()
Dernière modification par Sciensous (Le 22/09/2021, à 08:27)
antiX 19 (Debian Buster) et (L)Ubuntu focal 20.04
( sous LXDE et gnome-shell )
Hors ligne
#6 Le 22/09/2021, à 09:50
- Hizoka

Re : clic droit, script et liste de fichiers
Tu n'as pas besoin de modifier l'IFS pour le coup.
Bash permet pas mal de choses intéressantes ![]()
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#7 Le 22/09/2021, à 10:07
- Sciensous
Re : clic droit, script et liste de fichiers
bon désolé mais ça ne marche pas; surement car je n'ai pas précisé que le script est appelé par un .desktop avec les options -F %F
(le -F c'est un indicateur pour moi)
avec ce %F et dans le script avec "for f in $@" tout se passe comme si il n'y a qu'un seul champ
(je fais un shift pour le -F puis regarde $# pour vérifier le nombre de champs)
antiX 19 (Debian Buster) et (L)Ubuntu focal 20.04
( sous LXDE et gnome-shell )
Hors ligne
#8 Le 22/09/2021, à 10:17
- Hizoka

Re : clic droit, script et liste de fichiers
Fichier desktop :
[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=video/x-matroska;
Actions=hizo-mkv-delete-attachments;
TryExec=hizo-service-menus
X-KDE-Submenu=Hizo Service Menus
[Desktop Action hizo-mkv-delete-attachments]
Name=MKV : Supprimer les fichiers attachés
Icon=tag-delete
Exec=hizo-service-menus "hizo-mkv-delete-attachments" %UScript hizo-service-menus :
#/bin/bash
# Traite la liste des fichiers
for File in "${@:2}"
do
echo "File : $File"
doneJe commence à 2 car $1 me sert de repaire comme toi avec ton -F
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#9 Le 23/09/2021, à 07:38
- ar barzh paour

Re : clic droit, script et liste de fichiers
remarque importante : dans mon exemple , la variable f n'est valable qu'à l'intérieure des parenthèses
exemple
liste="'fichier1' 'fichier 2' 'fichier 3 et autre'"
( IFS="'" ; for f in $liste ; do echo $f ; done )
fichier1
fichier 2
fichier 3 et autre
# en dehors des parenthèses, l'IFS n'est pas modifié ,le résultat de la commande est impacté
for f in $liste ; do echo $f ; done
'fichier1'
'fichier
2'
'fichier
3
et
autre'bon maintenant je suis de la vielle école !!!
j'ai essayé de répondre à
question: dans le script (sh) lui-même, y-a-t-il une méthode simple de faire une boucle sur cette liste ?
Dernière modification par ar barzh paour (Le 23/09/2021, à 07:40)
PC : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz + 4GiB RAM DDR4-2400 Ubuntu 20.04 , 18.04 22.04 (test)
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 20.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne