Re: [TECH] Problème bash

2009-09-21 Par sujet Pascal Robinet
Bonjour,

rm mon\ fichier.xml
devrait faire l'affaire.

pour l'effacement en lot il te suffit de garder \  dans ton expression
régulière.

Cordialement,
Pascal


Le vendredi 18 septembre 2009 à 13:28 +0200, Guy Passail a écrit :
 Salut à tous,
 Je me suis bêtement fait refiler des fichiers comportant des noms 
 comportant des espaces du style mon fichier.xml
 Question : comment faire pour les effacer avec rm isolément et en lots ?
 Merci de votre aide
 Guy
 
 
  Diffusez cette liste aupres de vos relations :-)
 Linux Azur : http://linux-azur.org
Vous etes responsable de vos propos.
 *** Pas de message SMS, HTML ni de PJ SVP ***
 



 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-20 Par sujet Vincent BRACH
Le samedi 19 septembre 2009 à 12:36 +0200, Guy Passail a écrit :
 Yann a écrit :
  Guy Passail a écrit :
  Suffit de demander :
  
  find . -name * * |while read i; do mv $i `echo $i | tr   _` ;  done
  
  Non testé, mais devrait marcher.
  
  Limitation :
  Ça ne marchera que si les répertoires n'ont pas d'espace dans leur nom.
 Pas drôle sans les répertoires (:-))
 

Fonctionne avec l'arbo suivante : 

(avant) :

$ tree


Re: [TECH] Problème bash

2009-09-20 Par sujet Guy Passail

Vincent BRACH a écrit :

Le samedi 19 septembre 2009 à 12:36 +0200, Guy Passail a écrit :

Yann a écrit :

Guy Passail a écrit :
Suffit de demander :

find . -name * * |while read i; do mv $i `echo $i | tr   _` ;  done

Non testé, mais devrait marcher.

Limitation :
Ça ne marchera que si les répertoires n'ont pas d'espace dans leur nom.

Pas drôle sans les répertoires (:-))



Fonctionne avec l'arbo suivante : 


(avant) :

$ tree
.
|-- bubu bibi bobo.txt
|-- dir with space
|   |-- dir with space 2
|   |   `-- tu tu tu.txt
|   `-- plop truc.txt
`-- titi toto tata.txt

2 directories, 4 files

$ find . -depth -regex .*\ .* | while read line ; do mv $line
`dirname $line`/`basename $line | tr ' ' '_'` ; done

(aprés)

$ tree
.
|-- bubu_bibi_bobo.txt
|-- dir_with_space
|   |-- dir_with_space_2
|   |   `-- tu_tu_tu.txt
|   `-- plop_truc.txt
`-- titi_toto_tata.txt

2 directories, 4 files

La petite suptilité réside dans le fait qu'il faut commencer par
traiter le contenu d'un directory avant celui-ci (option -depth de
find) et conserver dans le nom de fichier de destination du mv le
dirname originale (et ne modifier que le basename) sinon on va avoir un
petit souci car on va tenter de déplacer dir with space/dir with space
2/tu tu tu.txt - dir_with_space/dir_with space_2/tu_tu_tu.txt , hors
dir_with_space/dir_with space_2 n'existe pas encore (et si on fait
l'inverse on aura le problème que le répertoire original n'existe plus
donc les 'mv' suivant ne fonctionneront pas...)

Ceci dit y'a ptet' moyen de faire plus simple (ou tout simplement
d'utiliser le script perl rename qui fait ça trés bien ;))

C'est plus drôle là ;-) ?

@+
Vincent BRACH 









 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***




Bravo, tu es donc le grand vainqueur du concours de la commande bash du WE !
Sur la toile (site que je ne fréquente pas habituellement!), j'avais 
trouvé un long script dont je ne sais ce qu'il apporterait de plus...

http://www.novell.com/coolsolutions/tools/15601.html
Merci à tous
Guy

Diffusez cette liste aupres de vos relations :-)
   Linux Azur : http://linux-azur.org
  Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-19 Par sujet Vincent BRACH
Histoire de (pour les sceptiques ou simplement ceux qui n'ont pas envie
d'essayer), je rajoute un 'ti log 

$ ls  *\ *
bubu bibi bobo.txt  titi toto tata.txt

$ for i in *\ * ; do mv $i `echo $i | tr   _` ; done

$ ls *.txt
bubu_bibi_bobo.txt  titi_toto_tata.txt

A+








 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-19 Par sujet Guy Passail

Vincent BRACH a écrit :

$ for i in *\ * ; do mv $i `echo $i | tr   _` ; done

TB, mais la même chose en récursif pour ce long WE pluvieux ? ;)
Guy

Diffusez cette liste aupres de vos relations :-)
   Linux Azur : http://linux-azur.org
  Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-19 Par sujet Fabien Germain
2009/9/19 Vincent BRACH v.br...@smie.com

 Pour ceux qui veulent absolument utiliser mv :

 for i in *\ * ; do mv $i `echo $i | tr   _` ; done

 mais vu la puissance du bash il doit y avoir encore d'autres
 possibilitées ;)

 J'ai gagné quoi, un mars ? :p


Tu as gagné toute notre considération ! La même chose avec awk maintenant ?
;-)

Fabien
-- 

Samuel Goldwynhttp://www.brainyquote.com/quotes/authors/s/samuel_goldwyn.html
- I'm willing to admit that I may not always be right, but I am never
wrong.

 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-19 Par sujet Yann

Guy Passail a écrit :

Vincent BRACH a écrit :

$ for i in *\ * ; do mv $i `echo $i | tr   _` ; done

TB, mais la même chose en récursif pour ce long WE pluvieux ? ;)


Suffit de demander :

find . -name * * |while read i; do mv $i `echo $i | tr   _` ;  done

Non testé, mais devrait marcher.

Limitation :
Ça ne marchera que si les répertoires n'ont pas d'espace dans leur nom.

Yann
--
Plantes grasses et cactus : http://www.cactuspro.com/
Yann : http://yanncochard.com

Diffusez cette liste aupres de vos relations :-)
   Linux Azur : http://linux-azur.org
  Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-19 Par sujet Guy Passail

Yann a écrit :

Guy Passail a écrit :

Vincent BRACH a écrit :

$ for i in *\ * ; do mv $i `echo $i | tr   _` ; done

TB, mais la même chose en récursif pour ce long WE pluvieux ? ;)


Suffit de demander :

find . -name * * |while read i; do mv $i `echo $i | tr   _` ;  done

Non testé, mais devrait marcher.

Limitation :
Ça ne marchera que si les répertoires n'ont pas d'espace dans leur nom.

Pas drôle sans les répertoires (:-))

Diffusez cette liste aupres de vos relations :-)
   Linux Azur : http://linux-azur.org
  Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet nicolas . flinois
2009/9/18 Guy Passail pass...@free.fr:
 Salut à tous,
 Je me suis bêtement fait refiler des fichiers comportant des noms comportant
 des espaces du style mon fichier.xml
 Question : comment faire pour les effacer avec rm isolément et en lots ?
 Merci de votre aide
 Guy


Déjà il faut trouver les fichiers = find
genre un truc qui ressemble a:  find /mon/path/de/depart/ -regex '.*
.*\.xml'  /tmp/xml_comportant_un_espace
Tu vérifies qu'il n'y a pas de boulettes dans la liste, puis un bon
cat /tmp/xml_comportant_un_espace | xargs rm
fera exécuter le rm sur ta liste de fichiers.

Sinon  find /mon/path/de/depart/ -regex '.* .*\.xml' | xargs rm  va
plus vite mais te goures pas sur la condition du find

++
N1c0

 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet BRACH Vincent


 Bonjour,

Salut,

 Guy Passail a écrit :
  Salut à tous,
  Je me suis bêtement fait refiler des fichiers comportant des noms 
  comportant des espaces du style mon fichier.xml
 Copier coller, sinon
 rm mon\ fichier.xml
 Sinon aussi avec les  comme tu as mis dans le mail.
  Question : comment faire pour les effacer avec rm isolément et en lots ?
 en lots ? ben tu peut faire un scripts en utilisant \  a la place des 
ca devrais marcher.
  Merci de votre aide
  Guy
 Espérant que ca aide.
 
 Patrick.



Sinon tu peux dans le répertoire qui contient des fichiers (et sous
répertoires éventuels) avec des espaces taper la commande suivante :

rename -v 'y/\ /_/' *

Ca renommera tout les fichiers en remplaçant l'espace par un _
(underscore) ... (pratique).

A+

Vincent

 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet BRACH Vincent
Le vendredi 18 septembre 2009 à 14:07 +0200, BRACH Vincent a écrit :


 Sinon tu peux dans le répertoire qui contient des fichiers (et sous
 répertoires éventuels) avec des espaces taper la commande suivante :
 
 rename -v 'y/\ /_/' *
 
 Ca renommera tout les fichiers en remplaçant l'espace par un _
 (underscore) ... (pratique).
 
 A+
 
 Vincent


Oops pardon l'idée était de les effacer (et non de les conserver avec un
nom sans espace)...

dsl ;)


 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet Guy Passail

nicolas.flin...@gmail.com a écrit :


Sinon  find /mon/path/de/depart/ -regex '.* .*\.xml' | xargs rm  va


Merci Nico, ça marche chez moi avec petite modif comme suit :
find ./ -regex '*.*\.xml'  ~/tmp/xml_comportant_un_espace | cat 
~/tmp/xml_comportant_un_espace



Diffusez cette liste aupres de vos relations :-)
   Linux Azur : http://linux-azur.org
  Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet Guy Passail

Merci à tous pour vos bonnes idées.
...quand je pense que j'avais oublié la solution avec le \ !
Guy

Diffusez cette liste aupres de vos relations :-)
   Linux Azur : http://linux-azur.org
  Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet BRACH Vincent
 Bonjour Vincent,

Bonjour Jean-Claude,

 Comme je trouvais ton info très intéressante, j'ai voulu l'essayer, et 
 elle ne semble pas fonctionner sur mon système.
 
 Lorsque je lance cette commande, aucun message d'erreur ne s'affiche, 
 mais les fichiers ne sont pas renommés.
 De plus, la page man de rename ne parle pas de l'option -v.

rename (/usr/bin/rename) chez moi est un lien symbolique (par le biais
des alternatives) vers /usr/bin/prename qui est un script inclus dans le
package 'perl'.


 rename -V indique que j'utilise la version util-linux-ng 2.14.2
 Une idée ?

Voila donc la différence : le package util-linux-ng n'est pas installé
chez moi donc on utilise pas le même outil rename...

Chez moi la manpage de rename me donne bien une manpage sur un script
perl, et /usr/bin/rename est bien un script perl...

Je pense qu'en installant le package perl (et en configurant les
alternatives) tu devrais avoir le même comportement que moi ;)

nota : attention pour ce script perl il s'agit de l'option -v (v en
minuscule ;-) )

 Jean-Claude

@+
Vincent


 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet nicolas . flinois
2009/9/18 Guy Passail pass...@free.fr:
 find ./ -regex '*.*\.xml'  ~/tmp/xml_comportant_un_espace | cat
 ~/tmp/xml_comportant_un_espace

Oui mais fais gaffe, c'est plus la même chose:

'*.*\.xml' = n'importe quel fichier .xml, alors que ma regex '.*
.*\.xml' concerne tous les .xml qui ont un espace dans le nom (ou que
soit l'espace).

++
N1c0

 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet Guy Passail

nicolas.flin...@gmail.com a écrit :

Oui mais fais gaffe, c'est plus la même chose:

'*.*\.xml' = n'importe quel fichier .xml, alors que ma regex '.*
.*\.xml' concerne tous les .xml qui ont un espace dans le nom (ou que
soit l'espace).

mais avec :
regex '.* .*\.xml'
il ne me les trouve pas !???

Diffusez cette liste aupres de vos relations :-)
   Linux Azur : http://linux-azur.org
  Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet nicolas . flinois
2009/9/18 Guy Passail pass...@free.fr:
 mais avec :
 regex '.* .*\.xml'
 il ne me les trouve pas !???

Je dois merdouiller quequechose dans ma regexp (suivant les
interpréteurs les syntaxes ne sont pas forcement les mêmes) si on
ajoute a ca le fait que je la fasse de tête sans tester... mais l'idée
est la suivante:

un caractère quelconque = .
le caractère a = a
le caractère a 3 fois = a{3}
le caractère a N fois (zéro compris) = a*
n'importe quels caractères N fois (zéro compris) = .*
le caractère espace = ' '
le caractère espace n'importe ou dans une string =  .* .*
le caractère . = \.
la fin de la string = $
un espace (au moins un) dans le nom qui se termine par .xml = .* .*\.xml$

Fais mu-muse avec jusqu'à trouver ce qui te rend bien tes fichiers...
en tout cas c'est sur que si tu mets .* ou .*\.xml tu renvoies tous
les XML. Mais pas ton critère de présence d'un caractère espace.

++
N1c0

 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet Jean-Claude REPETTO

BRACH Vincent a écrit :
rename (/usr/bin/rename) chez moi est un lien symbolique (par le biais 
des alternatives) vers /usr/bin/prename qui est un script inclus dans le 
package 'perl'.


Perl est installé sur mon système, mais il n'y a pas d'outil prename.



Chez moi la manpage de rename me donne bien une manpage sur un script 
perl, et /usr/bin/rename est bien un script perl...


J'ai bien trouvé la page man de prename :
http://pwet.fr/man/linux/commandes/prename

La mienne est celle-ci:
http://linux.die.net/man/1/rename

J'ai même trouvé un forum qui donne le même exemple que toi :
http://forum.trustonme.net/open/post-cat-1-topic-8166.html

Je vais essayer de trouver et d'installer prename.

Diffusez cette liste aupres de vos relations :-)
   Linux Azur : http://linux-azur.org
  Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet JPB
Le vendredi 18 septembre 2009, Jean-Claude REPETTO a écrit :
 BRACH Vincent a écrit :
  rename (/usr/bin/rename) chez moi est un lien symbolique (par le biais
  des alternatives) vers /usr/bin/prename qui est un script inclus dans le
  package 'perl'.

 Perl est installé sur mon système, mais il n'y a pas d'outil prename.

  Chez moi la manpage de rename me donne bien une manpage sur un script
  perl, et /usr/bin/rename est bien un script perl...

 J'ai bien trouvé la page man de prename :
 http://pwet.fr/man/linux/commandes/prename

 La mienne est celle-ci:
 http://linux.die.net/man/1/rename

 J'ai même trouvé un forum qui donne le même exemple que toi :
 http://forum.trustonme.net/open/post-cat-1-topic-8166.html

 Je vais essayer de trouver et d'installer prename.

Pourquoi ne pas utiliser mv qui fait la même chose ?

Ou j'ais tout faux ?

JPB

 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet Jean-Claude REPETTO

JPB a écrit :



Pourquoi ne pas utiliser mv qui fait la même chose ?

Ou j'ais tout faux ?


La page de man de mv :
http://unixhelp.ed.ac.uk/CGI/man-cgi?mv
n'indique pas qu'on peut faire des substitutions avec des expressions 
rationnelles.



Diffusez cette liste aupres de vos relations :-)
   Linux Azur : http://linux-azur.org
  Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Re: [TECH] Problème bash

2009-09-18 Par sujet JPB
Le vendredi 18 septembre 2009, Jean-Claude REPETTO a écrit :
 JPB a écrit :
  Pourquoi ne pas utiliser mv qui fait la même chose ?
 
  Ou j'ais tout faux ?

 La page de man de mv :
 http://unixhelp.ed.ac.uk/CGI/man-cgi?mv
 n'indique pas qu'on peut faire des substitutions avec des expressions
 rationnelles.


C'est implicite, car mv fait partie du shell et profite donc de toutes les 
facilités de celui-ci (me semble t'il).

JPB

 Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://linux-azur.org
   Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***