Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| utilisateurs:j5012:brouillons:mes_nautilus_scripts [Le 06/01/2017, 21:50] – [Explications de code] J5012 | utilisateurs:j5012:brouillons:mes_nautilus_scripts [Le 02/03/2018, 22:09] (Version actuelle) – debug du script pyrenamer...zenity J5012 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Mes Nautilus-scripts ====== | ||
| + | |||
| + | ===== Prérequis ===== | ||
| + | |||
| + | * Lisez la documentation [[: | ||
| + | * Lisez la documentation [[https:// | ||
| + | * Lisez la documentation [[http:// | ||
| + | |||
| + | ===== Un script pour renommer en masse avec pyrenamer ===== | ||
| + | |||
| + | * Installez le paquet **[[apt> | ||
| + | * Allez dans le dossier des scripts nautilus | ||
| + | * Créez-y le fichier // | ||
| + | * Rendez le exécutable, | ||
| + | * Éditez-le et copiez-collez-y le code suivant | ||
| + | |||
| + | < | ||
| + | #!/bin/bash | ||
| + | # | ||
| + | # Lance l' | ||
| + | # dans le dossier selectionné | ||
| + | # ou dans le dossier du fichier selectionné. | ||
| + | # | ||
| + | # Nautilus Script " | ||
| + | # | ||
| + | # ************************************************************** | ||
| + | # NB : | ||
| + | # Il semble qu'il y ait un bug entre bash, gtk, python | ||
| + | # depuis Ubuntu Xenial : | ||
| + | # - si le script lance directement la commande " | ||
| + | # - le passage de l' | ||
| + | # Résolu temporairement avec la commande "bash -c" | ||
| + | # | ||
| + | # # après une certaine mise à jour proche | ||
| + | # # d'un nouveau noyau, le passage d' | ||
| + | # # à pyrenamer fonctionne de nouveau sans utiliser | ||
| + | # # la commande : bash -c → pyrenamer " | ||
| + | # ******************************************************************* | ||
| + | # | ||
| + | # Debut de programme | ||
| + | # | ||
| + | # Si l' | ||
| + | # - le clic droit ne sélectionne ni dossier ni fichier | ||
| + | # - comportement plus valide avec xenial | ||
| + | # - pyrenamer s' | ||
| + | # - on fait ouvrir pyrenamer dans le dossier courant du clic " | ||
| + | # | ||
| + | if [ " | ||
| + | wdir=${NAUTILUS_SCRIPT_CURRENT_URI# | ||
| + | else | ||
| + | # | ||
| + | # L' | ||
| + | # - le clic droit sélectione un dossier ou un fichier | ||
| + | # - la variable filetype enregistre le type de l' | ||
| + | # - avec seulement la note " | ||
| + | # | ||
| + | filetype=$(file " | ||
| + | filetype=${filetype## | ||
| + | # | ||
| + | # La variable filetype enregistre le type " | ||
| + | # - le chemin de l' | ||
| + | # - avec la localisation complète et courante du dossier sélectionné | ||
| + | # - et de son nom, débarrassé de la notation shell " | ||
| + | # | ||
| + | if [ " | ||
| + | # # | ||
| + | ## je me suis rendu compte que puisque $1 etait un dossier, | ||
| + | ## on pouvait directementl' | ||
| + | wdir=" | ||
| + | else | ||
| + | # | ||
| + | # La variable filetype enregistre le type " | ||
| + | # - le chemin de l' | ||
| + | # - avec seulement la localisation complète et courante du fichier sélectiionné | ||
| + | # - débarrassé de la notation shell " | ||
| + | # | ||
| + | ## # | ||
| + | ## | ||
| + | ## je me suis rendu compte que c' | ||
| + | ## qui n' | ||
| + | ## la commande : pwd permet d' | ||
| + | wdir=$(pwd " | ||
| + | fi | ||
| + | fi | ||
| + | # | ||
| + | # Pour tout contenu de localisation complète | ||
| + | # pour le dossier de travail ou d' | ||
| + | # la variable $wdir est débarrassée de la notation shell du symbole " | ||
| + | # tous les échappements shell %20 deviennent des espaces " " | ||
| + | # | ||
| + | ## | ||
| + | ## comme le passage d' | ||
| + | ## la problematique de non encodage des espaces et des caractères accentués | ||
| + | ## disparaît ! | ||
| + | # | ||
| + | # Le contenu de la variable $wdir | ||
| + | # avec ses espaces et ses caractères accentués | ||
| + | # est protégé par des guillemets | ||
| + | # | ||
| + | # Pour parer au bug de passage des arguments, | ||
| + | # le script lance " | ||
| + | # bash est lancé et exécute pyrenamer avec l' | ||
| + | # entre guillemets. | ||
| + | # | ||
| + | # Insérer cette ligne de code zenity, | ||
| + | # pour montrer que l' | ||
| + | # sera utilisé correctement avec espaces | ||
| + | # et caractères accentués. | ||
| + | # zenity --info --text=" | ||
| + | ##bash -c " | ||
| + | ## comme rajouté dans les commentaires | ||
| + | ## du début de script, le passage d' | ||
| + | ## fonctionne en appelant directement le | ||
| + | ## programme. | ||
| + | pyrenamer " | ||
| + | </ | ||
| + | |||
| + | ==== Explications de code ==== | ||
| + | |||
| + | * le script vérifie le chemin d' | ||
| + | * le chemin est vide, le script lui assigne le dossier courant d' | ||
| + | * le chemin n'est pas vide, le script vérifie si c'est un fichier ou un dossier | ||
| + | * si c'est un dossier, le script lancera pyrenamer avec le nom du dossier selectionné et son chemin complet | ||
| + | * si c'est un fichier, le script lancera pyrenamer avec le dossier contenant le fichier selectionné | ||
| + | * le script prend en compte les espaces et les caracteres accentués | ||
| + | |||
| + | __Lire les commentaires du code__ | ||
