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.
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.
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
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
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
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.