RE: command line shell xargs pipe

2001-09-03 Par sujet Jean-Luc Jeanneau

Merci a ceux qui m'ont repondu.
J'ai appris pas mal de trucs.


 basename est ton ami.
 -print0 - argument -0 de xargs.
?? je maitrise difficilement la combinaison des deux : ca marche pas
?? find . -name *.htm -print0 | xargs mv -0 `basename -0 .htm` .html

 FILE_NAME=`basename $i .html`
 mv $i $FILE_NAME.truc
Ca marche
#!/bin/sh
# mv *.html *.htm
   for i in `ls *.html`
   do
  FILE_NAME=`basename $i .html`
  mv $i $FILE_NAME.htm
   done


 ren *.htm *.html
pas de ren chez moi mais rename existe sous SuSE 7.1 effectivement.
   rename .htm .html *.htm (== mv *.htm *.html  )
   rename .html .htm *.html(== mv *.html *.htm  )
On dirait que c'est assez SuSE specific. Le man ne dit pas
si c'est du perl derriere. '/sbin/rename' est un fichier binaire.


 Sous Linux peut-être pas, mais sous Linux avec Perl installé
 (du moins sur
 une Debian):

rename 's/\.htm$/.html/' *.htm
J'ai perl mais j'pense que ca marche pas en ligne de commande.
Il doit falloir le mettre dans un script perl. (perl est assez
nouveau pour moi).


 find . -name \*.htm|xargs -i mv {} {}l
 find . -name \*.html -exec basename {} l \;|xargs -i mv  {}l {}
Les deux marchent. bravo.
Genial cette option -i , j'aime beaucoup, beaucoup.
find . -name *.html | xargs -i basename {} .html | xargs -i mv {}.html
{}.htm

Merci encore.

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: command line shell xargs pipe

2001-09-01 Par sujet Félix Hauri

On Fri, 31 Aug 2001, ... wrote:

Anonyme?!


 Essaie sa,

 find . -name \*.htm|xargs -i mv {} {}l
Mais bon! Concis et recursif!

 Pour la deuxieme sollution
 
 find . -name \*.html -exec basename {} ll \;|xargs -i mv  {}l {}
Ah! Là, on n'est plus recursif!
Danger de retrouver toute une arborescence groupée dans un répertoire:=))

Personellement je préfère la solution ``lourde'' qui n'utilise pas
xargs mais bash2 et peut aussi être donnée en ligne de commande:

$ for file in $(find . -name *.html);do mv $file ${file%l};done

et au retour:

$ for file in $(find . -name *.htm);do mv $file ${file}l;done

--
 Félix Hauri  -  [EMAIL PROTECTED]  -  http://www.f-hauri.ch


--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



command line shell xargs pipe

2001-08-31 Par sujet Jean-Luc Jeanneau

Bonjour ,

Une petite question pour les amateurs de shell.
(c'est un peu pour l'exercice)

J'ai du renomer pleins *.htm en *.html . J'ai
voulu le faire avec la ligne de commande.
Je n'ai pas reussi.

Voici ce que j'ai tente :
 find . -name *.htm -print0 | xargs mv $_ $_l

La sortie de la pipe (entree de xargs), c'est normalement
'-' je crois au lieu $_ j'ai essaye aussi. 

Ca a marche avec ce script. 
( mais j'attends une solution moins 'lourde':)   )
#!/bin/sh
   for dfile in `ls *.htm`
   do
  mv $dfile ${dfile}l
   done   
   
[question 2] : dans l'autre sens
Si j'avais voulu faire mv *.html *.htm, j'aurais
pas su comment faire pour supprimer le dernier caratere
de la chaine (dans ce cas, le 'l' de '*.html') meme
avec un script.

Jean-Luc.

 
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



RE: command line shell xargs pipe

2001-08-31 Par sujet Marc SCHAEFER

On Fri, 31 Aug 2001, Stephane Ziegler wrote:

 Je vais peut-être paraître idiot, mais il n'existe pas sous linux une
 commande style:

Sous Linux peut-être pas, mais sous Linux avec Perl installé (du moins sur
une Debian):

   rename 's/\.htm$/.html/' *.htm

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: command line shell xargs pipe

2001-08-31 Par sujet Marc SCHAEFER

On Fri, 31 Aug 2001, Jean-Luc Jeanneau wrote:

  find . -name *.htm -print0 | xargs mv $_ $_l

-print0 - argument -0 de xargs.

 Si j'avais voulu faire mv *.html *.htm, j'aurais

FILE_NAME=`basename $i .html`
mv $i $FILE_NAME.truc

cf autre réponse aussi


--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: command line shell xargs pipe

2001-08-31 Par sujet ...

Essaie sa,

find . -name \*.htm|xargs -i mv {} {}l
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: command line shell xargs pipe

2001-08-31 Par sujet ...

Pour la deuxieme sollution

find . -name \*.html -exec basename {} ll \;|xargs -i mv  {}l {}

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.