#1 Le 14/12/2015, à 18:58
- handmusician
[RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Bonjour,
Je veux joindre les fichiers ts d'un dossier en utilisant un nautilus-script (script dans le menu clic droit)
Voilà mon code :
#!/bin/bash
ad=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
nom=$(basename $ad)
list=$(find $ad '*.ts')
cat $list > '/home/didi/Bureau/films/'$nom'.ts'
exit 0
Ca marche nickel mais uniquement pour les dossiers avec un nom sans espaces. Comment faire s'il y a des espaces ?
J'ai cherché sur les forums mais aucune solution ne fonctionne le nom du dossier est tronqué.
J'ai essayé par exemple de récupérer les arguments de nautilus_script_selected_file_paths avec une boucle ca donne rien (j'ai ajouté dans la boucle zenity --info --text "$arg" pour voir les différents arguments et ca n'affiche que le 1er mot snifff)
J'ai aussi testé avec $PWD $1... en choisissant directement un fichier ts dans le dossier et pareil le nom du dossier reste tronqué quoique je fasse....
Dernière modification par Ayral (Le 15/12/2015, à 11:10)
Hors ligne
#2 Le 14/12/2015, à 19:22
- lynn
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Bonjour,
A mon avis, faut voir du côté de
IFS=$'\n'
Des spécialistes du script vont sans doute passer par là et éclairer ta lanterne ( et la mienne ).
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#3 Le 14/12/2015, à 19:41
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Merci lynn, je vais voir de ce côté en attendant
Hors ligne
#4 Le 14/12/2015, à 19:42
- ar barzh paour
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
peut-être un début de réponse
lance et essai ce script :
#!/bin/bash
NAUTILUS_SCRIPT_SELECTED_FILE_PATHS="/Photos/2015/2015 12 01 je vais dormir/IMGP_0123.JPG"
echo "mauvaise méthode"
ad=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
echo $ad
nom=$(basename $ad)
echo $nom
echo "méthode meilleure"
ad="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
echo "$ad"
nom=$(basename "$ad")
echo "$nom"
read g
exit 0
Dernière modification par ar barzh paour (Le 14/12/2015, à 19:44)
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
#5 Le 14/12/2015, à 20:13
- lynn
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Un truc du genre devrait fonctionner mais je n'ai pas de fichier .ts pour essayer...
#!/bin/bash
IFS=$"\n"
list='/home/$USER/*.ts'
for i in $list; do
cat "$@" "${i}" > new.ts
done
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#6 Le 14/12/2015, à 21:06
- lynn
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
#!/bin/bash
cat "$@" > new.ts
Encore plus simple. Sélectionne les fichiers à concaténer, clic droit sur la sélection et exécuter le script. Ça fonctionne avec des fichiers textes; Pour les fichiers .ts, je ne sais pas.
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#7 Le 14/12/2015, à 21:20
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Merci beaucoup à vous ! EN effet IFS fonctionne tout comme ajouter les guillemets.
Voilà donc mon code final :
#!/bin/bash
ad="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
nom=$(basename "$ad")
cd "$ad"
cd "$nom"
list=$(find . -name '*.ts')
cat "$list" > '/home/didi/Bureau/films/'"$nom"'.ts'
exit 0
Dernière modification par Ayral (Le 15/12/2015, à 11:09)
Hors ligne
#8 Le 14/12/2015, à 21:43
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Pour concaténer les fichiers ts sélectionnés en un fichier avec le nom du dossier qui les contient je fais comme ca :
#!/bin/bash
nom=$(basename "$PWD")
cat "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" > '/home/didi/Bureau/films/'"$nom"'.ts'
Merci lynn j'ai essayé avec "$@" mais ca ne prend que le 1er fichier parmi les selectionnés.
Dernière modification par Ayral (Le 15/12/2015, à 11:09)
Hors ligne
#9 Le 15/12/2015, à 10:15
- ar barzh paour
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
dans le post #7
je ne comprends pas trop ce que tu fais
cd "$ad" # sauf si ad est un répertoire ça ne veut rien dire
cd "$nom" # ça ne veut rien dire , nom étant le nom d'un fichier
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
#10 Le 15/12/2015, à 11:12
- Ayral
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
S'il vous plaît veuillez utiliser les balises code pour les retours de commande et les scripts, afin de faciliter la lecture. Explications en lien dans ma signature. Merci.
Pour mettre les retours de commande entre deux balises code, les explications sont là : https://forum.ubuntu-fr.org/viewtopic.php?id=1614731
Blog d'un retraité
Site de graphisme du fiston Loïc
Ubuntu 22.04 LTS sur un Thinkpad W540
Hors ligne
#11 Le 15/12/2015, à 14:33
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
-Ayral, ok j'en prends note merci !
- ar barzh paour oui $ad est un répertoire celui qui contient les fichiers ts $nom est donc son nom. En gros, je sélectionne le répertoire et le script trouve les fichiers ts à partir de son adresse. Ce que je ne comprends pas c'est pourquoi cd "$ad" ne suffit pas, ca marche pas sans cd "$nom" (ou plus simple cd "$1")...
- Lynn je retire ce que j'ai dit pour le script sur les fichiers sélectionnés c'est bien ton code qui est le bon (le zenity m'indique seulement le premier fichier c'est pour ça que je pensais que ca ne marchait pas).
Si on veux choisir le nom du fichier concaténé au lieu d'utiliser le nom du dossier :
Dossier sélectionné (tous les ts) :
#!/bin/bash
ad="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
nom=$(zenity --entry --text="Nom du fichier ? " --title="Saisie nom fichier")
cd "$ad"
cd "$1"
list=$(find . -name '*.ts')
cat "$list" > '/home/didi/Bureau/films/'"$nom"'.ts'
exit 0
Seulement les fichiers sélectionnés :
#!/bin/bash
nom=$(zenity --entry --text="Nom du fichier ? " --title="Saisie nom fichier")
cat "$@" > '/home/didi/Bureau/films/'"$nom"'.ts'
Dernière modification par handmusician (Le 15/12/2015, à 14:36)
Hors ligne
#12 Le 15/12/2015, à 16:10
- Compte anonymisé
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Sinon il y a moyen de simplifier le script, par exemple la commande ci-dessous doit faire exactement la même chose.
#!/bin/sh
cat "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS/$1/*.ts" > "~/Bureau/films/$(zenity --entry --text="Nom du fichier ? " --title="Saisie nom fichier").ts"
Dernière modification par Compte anonymisé (Le 15/12/2015, à 16:11)
#13 Le 15/12/2015, à 17:47
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
J'ai testé mais ca ne marche pas.
Sinon j'ai trouvé comment faire sans nautilus selected files :
#!/bin/bash
nom=$(zenity --entry --text="Nom du fichier ? " --title="Saisie nom fichier")
cd "$1"
list=$(find . -name "*.ts")
cat $list > '/home/didi/Bureau/films/'"$nom"'.ts'
Dernière modification par handmusician (Le 15/12/2015, à 17:52)
Hors ligne
#14 Le 15/12/2015, à 17:54
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
"~/Bureau/films/..." ne fonctionne pas pour moi
Hors ligne
#15 Le 16/12/2015, à 09:38
- ar barzh paour
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
je n'utilise pas les scripts nautilus ( ni nautilus d'ailleurs)
je ne sais pas ce qu'est $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
mais je pense beaucoup de réponse ci-dessous
https://doc.ubuntu-fr.org/nautilus_scripts
voir en particulier le $3 $3.1 et 3.2 (qui donne des solutions)
et d'après ce que je lis
$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
n'est pas un répertoire mais une liste de chemin complet
Dernière modification par ar barzh paour (Le 16/12/2015, à 09:52)
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
#16 Le 16/12/2015, à 15:04
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Oui j'avais vu cette page merci
$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS retourne la liste des chemins complets des fichiers (mais aussi dossiers) sélectionnés
J'utilisais cette variable au départ pour avoir le chemin du dossier lorsque j'applique le script dessus afin de pouvoir chercher dans ce dossier les fichiers ts.
C'est avec cat que ca n'allait pas bien en fait et maintenant je n'ai plus besoin de $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS.
Lorsque j'applique le script sur le dossier contenant les fichiers ts, ca revient à faire cd "chemin du répertoire contenant le dossier", comme "$1" renvoie le nom du dossier je n'ai plus qu'à faire cd "$1" pour entrer dedans puis établir la liste des ts avec find et enfin concaténer la liste avec cat.
Et quand j'applique le script à une sélection de fichiers ts là je suis déjà dans le dossier, pour les concaténer je n'ai donc plus qu'à utiliser "$@" qui renvoie la liste des noms avec extension des fichiers. sélectionnés.
Hors ligne
#17 Le 16/12/2015, à 15:14
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Pour simplifier encore plus on peut utiliser dir :
#!/bin/bash
nom=$(zenity --entry --text="Nom du fichier ? " --title="Saisie nom fichier")
cd "$1"
list=$(dir *.ts)
cat $list > '/home/didi/Bureau/films/'"$nom"'.ts'
zenity --info --text "$nom"' fait !'
Comme les ts c'est long à concaténer et qu'on sait pas quand le traitement est terminé, j'ajoute un zenity pour annoncer la fin du traitement.
Hors ligne
#18 Le 16/12/2015, à 16:48
- pingouinux
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Bonjour,
list=$(dir *.ts) cat $list > '/home/didi/Bureau/films/'"$nom"'.ts'
Si les noms de fichiers contiennent des espaces, ça ne marchera pas.
Pourquoi pas faire directement
cat *.ts > '/home/didi/Bureau/films/'"$nom"'.ts'
Hors ligne
#19 Le 16/12/2015, à 17:24
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Mes fichiers sont tous sous la forme 00x.ts donc pas de soucis mais je vais essayer ton code merci beaucoup !
Hors ligne
#20 Le 16/12/2015, à 17:41
- handmusician
Re : [RÉSOLU] nautilus script récup chemin complet dossier nom avec espaces
Yes, ca fonctionne !
Hors ligne