RE: command line shell xargs pipe
On Mon, 3 Sep 2001, Jean-Luc Jeanneau wrote: > >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). non, c'est une commande shell qui a l'avantage d'être implémentée en Perl, mais cela, de l'extérieur, cela ne se voit pas. -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
RE: command line shell xargs pipe
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
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.
Re: command line shell xargs pipe
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.
Re: command line shell xargs pipe
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
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
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
Jean-Luc Jeanneau wrote: > [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. basename est ton ami. Exemple : $ basename /usr/include/stdio.h .h stdio -- Paul-Jean Cagnard "Gianna Nannini, pourquoi tant de N ?" -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
RE: command line shell xargs pipe
>J'ai du renomer pleins *.htm en *.html . J'ai >voulu le faire avec la ligne de commande. >Je n'ai pas reussi. Je vais peut-être paraître idiot, mais il n'existe pas sous linux une commande style: ren *.htm *.html Stéphane -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.
command line shell xargs pipe
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.