#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 et 21 et Ubuntu 20.04 et 22.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 autre
Dernière modification par ar barzh paour (Le 21/09/2021, à 13:01)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( 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"; done
Tu 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 %F
Puis de traiter les url dans ton script
for f in "${@}"; do echo "$f"; done
Dernière modification par Hizoka (Le 21/09/2021, à 22:58)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
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 et 21 et Ubuntu 20.04 et 22.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
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
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 et 21 et Ubuntu 20.04 et 22.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" %U
Script hizo-service-menus :
#/bin/bash
# Traite la liste des fichiers
for File in "${@:2}"
do
echo "File : $File"
done
Je commence à 2 car $1 me sert de repaire comme toi avec ton -F
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
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 : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( 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