Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
utilisateurs:j5012:brouillons:mes_nautilus_scripts [Le 28/10/2017, 11:42] – [Un script pour renommer en masse avec pyrenamer] 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__ | ||