| Qui est en ligne ? |
| Il y a : 15 utilisateurs en ligne, consultez le détail |
Forum » Logiciels » renseignements bash rename? |
Forum modéré par : Ascodas |
| Même auteur |
|
Score ( voter ) : |
|
| Page : [1] |
| Auteur | Message |
|---|---|
|
|
#0 Message posté le : 05-11-2007 à 14:18:09 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 24-04-2005 Nombre de messages : 136 |
bjr comme je suis curieux de tout j'ai une petite question sur la commande rename rename 's/ //g' *.machin la commande suivante permet d'eliminer les espaces des noms de fichiers ayant pour extension machin je ne vois pas les options s , g dans le man de rename??quelqu'un pourrait il m'expliquer ???? je suppose que / // veut dire remplacer un espace / / par rien // merci d'avance --Message édité par clahor le 07-11-2007 à 18:18:20-- |
|
|
#1 Message posté le : 05-11-2007 à 15:13:57 |
Hobbit Forum : Inscrit Association : Arrivé(e) le : 17-10-2003 Nombre de messages : 1067 |
Il me semble qu'il ya plusieurs versions de "rename", une qui supporte ce genre d'expressions et une autre pas. Dans mon man rename, j'ai bien un exemple de ce type. Voici ma version : rename from util-linux-2.12a --Message édité par tamiel le 05-11-2007 à 15:14:10-- ------------------------------------- If you don't know, ask manpage ! |
|
|
#2 Message posté le : 05-11-2007 à 15:56:35 |
Hobbit Forum : Modérateur Association : Membre actif Arrivé(e) le : 11-08-2003 Nombre de messages : 1530 |
Salut, 's/ //g' est une expression régulière que tu peux utiliser autre part que dans rename. ------------------------------------- |
|
|
#3 Message posté le : 05-11-2007 à 17:52:03 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 24-04-2005 Nombre de messages : 136 |
merci a vous et l'expression reguliere s/ //gsignifie (remplacer espace par rien ) je suppose.....j'ai trouvé la un aperçu de la syntaxe en question http://pwet.fr/blog/tags/shell/(offset)/20
Remplacer du texte dans une série de fichiers répartis dans des dossiers
Le remplacement d'une chaîne par un autre dans une série de fichiers textuels de manière récursive (dans différents dossiers à différentes profondeurs) est une question qui revient souvent sur les listes de diffusion comme celle de Ubuntu-fr ou sur les forums comme par ce message de Free Mind d'il y a à peine 2 heures. Et pourtant la solution est "relativement" simple et tient en une ligne dans un terminal.
find /dossier/contenant/fichiers -type f -exec sed -i 's/à remplacer/remplacement/g' {} \;
Petite explication :
Cette commande indique à find de trouver dans /dossier/content/fichiers tous les fichiers simples (pas les dossiers, ni les liens symboliques, ...) et de lancer le remplacement avec sed (Stream EDitor). Dans cette expression, -i indique à sed de faire le remplacement directement dans le fichier plutôt que d'afficher la sortie. {} indique à find ou mettre le nom du fichier dans la commande, enfin le ; indique à find la fin de la commande à lancer et ce point virgule doit être précédé d'un \ (anti-slash) pour éviter qu'il ne soit interprèté par le shell.
Cette ligne montre toute la puissance qu'offre la combinaison des utilitaires en ligne de commandes disponible sous GNU/Linux (et sous la plupart des Unix) et en particulier de find et sed . En particulier la lecture de la page du manuel de find est plus que recommandé pour quelqu'un qui désire écrire des scripts shell de manipulation de fichiers.
Publié le 1 Septembre 2006 à 20:39 - 1 commentaire(s) - 0 trackback(s)
Tags : bash, Ubuntu, Linux, shell--Message édité par clahor le 05-11-2007 à 18:09:19-- |
|
|
#4 Message posté le : 06-11-2007 à 10:54:49 |
Jedi Forum : Modérateur Association : Membre fondateur Arrivé(e) le : 08-01-2005 Nombre de messages : 4030 |
Tout à fait, je complèterai même en disant que : - "s" signifie "substitute" soit remplacer en anglais. Il y a d'autres commandes que "s". - L'expression régulière recherchée se trouve entre les deux premiers "/", ici un espace. - Le motif de remplacement se trouve entre les deux derniers "/", soit rien ici. - Le "g" signifie "global" mais je ne sais plus trop ce que ça veut dire. ça a trait à la recherche de du motif. Tu peux te renseigner sur la commande sed, qui fait la même chose mais sur les lignes d'un fichier et non sur son nom. Tu trouveras plus facilement de doc sur sed que sur rename, notamment vis à vis des expressions rationnelles ------------------------------------- C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon - |
|
|
#5 Message posté le : 06-11-2007 à 12:57:53 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 24-04-2005 Nombre de messages : 136 |
merci a tous pour ces precieux renseignements qlq lignes de bash de temps a temps peuvent rendre des services |
|
|
#6 Message posté le : 06-11-2007 à 13:28:03 |
Hobbit Forum : Inscrit Association : Arrivé(e) le : 17-10-2003 Nombre de messages : 1067 |
le g à la fin veut tout simplement dire "pour tous les motifs trouvés" (matching regexp) . ------------------------------------- If you don't know, ask manpage ! |
|
|
#7 Message posté le : 09-11-2007 à 14:33:00 |
Naboo Forum : Modérateur Association : Président Arrivé(e) le : 09-04-2006 Nombre de messages : 2077 |
Je ne sais pas si rename le prend en charge mais il est à noter que vous pouver utiliser n'impore quel charactére comme séparateur. Cela peut-être pratique quand les chaînes contiennent des barres obliques. Par exemple : 's@http://www.ymer.info/@http://www.azollyx.eu/@', sinon il faudrait protéger les / par des \ (http:\/\/...) et c'est parfois lourd. --Message édité par Azollyx le 09-11-2007 à 14:34:14-- ------------------------------------- toto |
| Page : [1] |
Forum » Logiciels » renseignements bash rename? |
Forum modéré par : Ascodas |
| Même auteur |
|
Score ( voter ) : |
|
- Petit scarabée : 0 pastille, moins de 100 messages
- Scarabée : 0 pastille, plus de 100 messages
- Hobbit : 1 pastille, plus de 1000 messages
- Naboo : 2 pastilles, plus de 2000 messages
- Elfe : 3 pastilles, plus de 3000 messages
- Jedi : 4 pastilles, plus de 4000 messages
- Maître Jedi : 5 pastilles, plus de 5000 messages