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 15/01/2016, à 00:32

cristobal78

[résolu]NautilusScript remplacer blanc par underscore dans nom fichier

bonsoir à tous,

Depuis que j'ai découvert les nautilus script (ou les nemo script) grâce auxquels une action s'opère d'un simple click droit sur le nom de fichier, j'en cherche d'autre un peu partout.

Je suis tombé sur celui-ci :

#!/bin/bash
find | while read FN;do mv "$FN" "`echo $FN | sed -e 's/ /_/g'`";done

Je l'ai testé sur un fichier contenant des "blancs" que j'ai mis dans un dossier de test.
Ça marche impec.  smile

MAIS quand j'ai voulu l'essayer sur un répertoire qui contenait plusieurs fichiers contenant des blancs : TOUS ces fichiers ont vu leur "blanc" remplacé par un "underscore" !!!
Or moi je voudrais pouvoir ne modifier qu'un seul fichier à la fois et je ne trouve pas comment faire.

Experts codeurs auriez vous un conseil ?

Dernière modification par cristobal78 (Le 15/01/2016, à 16:21)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#2 Le 15/01/2016, à 01:25

J5012

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

find ... while read : boucle tant que valeur est ...

le script ne devrait tester que l'item en cours de selection, et appliquer le remplacement sed

Hors ligne

#3 Le 15/01/2016, à 09:14

cristobal78

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

salut j5012

"...devrait..." mais ne fait pas ! C'est bien là mon pb.

J'ai modifié le script comme ceci :

#!/bin/bash
FN=$1
mv "$FN" "`echo $FN | sed -e 's/ /_/g'`"

Ça marche pour un fichier (un seul) sélectionné, click droit, etc...
Mais ça ne marche pas pour 2 fichiers, par exemple si je veux sélectionner 2 fichiers particuliers avec Ctrl-Click droit.
Il doit falloir mettre un shift quelque part mais où ?


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#4 Le 15/01/2016, à 09:21

cqfd93

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

Bonjour,

Pour un seul fichier :

#!/bin/bash

rename "s/ /_/g" "$1"

cqfd93

Hors ligne

#5 Le 15/01/2016, à 10:37

pingouinux

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

Bonjour,
Et ceci ?

for FN in "$@"
do
   rename ...
done

Hors ligne

#6 Le 15/01/2016, à 11:24

cristobal78

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

Bjr cqfd et pingouinux

je me doutais bien que des super codeurs ne seraient pas bien loin !  smile
j'essaie vos 2 propositions et vous dirais comme ça marche.


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#7 Le 15/01/2016, à 12:50

pingouinux

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

Pour plusieurs fichiers, il suffit de modifier le script de cqfd93

rename "s/ /_/g" "$@"

Dernière modification par pingouinux (Le 15/01/2016, à 12:50)

Hors ligne

#8 Le 15/01/2016, à 13:55

Compte anonymisé

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

Si le remplacement a pour but la compatibilité, il y a aussi l'utilitaire detox. En plus des espaces, il remplace aussi tout les caractères qui pourraient poser problème.

Pour l'installer :

sudo apt-get install detox

Pour l'utiliser dans un script nautilus (à tester) :

detox "$@"

Dernière modification par Compte anonymisé (Le 15/01/2016, à 13:56)

#9 Le 15/01/2016, à 14:38

cqfd93

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

pingouinux a écrit :

Pour plusieurs fichiers, il suffit de modifier le script de cqfd93

rename "s/ /_/g" "$@"

Ah oui, exactement ce qu'il faut pour renommer seulement les fichiers sélectionnés.


cqfd93

Hors ligne

#10 Le 15/01/2016, à 16:15

cristobal78

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

Merci à vous tous.

Finalement j'ai choisi la version pingouinux+cqfd93 avec "rename" qui est la plus simple et qui marche comme je voulais : ça remplace bien  les blancs par des underscore dans les noms de  fichiers sélectionnés par un Ctrl- click droit et ça ne touche pas aux autres fichiers présents contenant aussi des blancs.

J'ai aussi regardé "detox" qui est dans les dépôts de base mais faute d'exemple compréhensible (pour moi !) je n'ai pas poursuivi dans cette voie. L'absence d'exemples simples reste pour moi le point le plus noir du man et je ne crois pas être le seul à penser ça !

Remarque : la solution

rename "s/ /_/g" "$@"

est tellement simple que je ne comprends ce qui a pu germer dans l'esprit délicieusement tortueux  wink de celui qui avait écrit

find | while read FN;do mv "$FN" "`echo $FN | sed -e 's/ /_/g'`";done

Je passe en résolu smile

Dernière modification par cristobal78 (Le 15/01/2016, à 16:23)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#11 Le 15/01/2016, à 23:48

J5012

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

le dev qui a choisi d'utiliser find etc avait sans doute pour but de sortir tous les espaces en souligné afin d'eviter avoir à gerer les guillemets pour les noms de fichiers avec espaces ... donc il devait trouver tous les fichiers et dossiers comportant des espaces dans leur nom ...

ton objectif est sensiblement different : tu devais d'avord comprendre la commande avant de pouvoir l'adapter à ton cas particulier ...

Hors ligne

#12 Le 16/01/2016, à 00:06

carreti

Re : [résolu]NautilusScript remplacer blanc par underscore dans nom fichier

En plus le rename d'ubuntu est en fait perl-rename pas le util-linux rename qui lui n'accepte pas les expressions régulières ... Donc pour la portabilité, voilà quoi ...


Utilisateur et administrateur de Linux et d'Unix (depuis le siècle dernier) et plus précisément ces dernières années de  Linux Gentoo et de Windows 10 ...
Je cherche du boulot sur Paris et RP Ouest en administration système ou mieux dans la tierce maintenance applicative, middleware, base de données, flux ...

Hors ligne