Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile ).


«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 smile

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 wink 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 cool (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 hmm

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 smile
$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,

handmusician a écrit :
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 ! big_smile

Hors ligne