{"id":83,"date":"2008-11-18T01:31:11","date_gmt":"2008-11-18T00:31:11","guid":{"rendered":"http:\/\/www.superkikim.com\/?p=83"},"modified":"2008-12-23T11:49:09","modified_gmt":"2008-12-23T10:49:09","slug":"utiliser-sed-ou-rename-dans-un-script-shell-ou-bash-pour-renommer-des-fichiers","status":"publish","type":"post","link":"https:\/\/akim.sissaoui.com\/en\/non-classe\/utiliser-sed-ou-rename-dans-un-script-shell-ou-bash-pour-renommer-des-fichiers\/","title":{"rendered":"sed ou rename en shell avec des variables"},"content":{"rendered":"<p>Voil\u00e0 deux heures que je cherche pourquoi diable lorsque j&#8217;utilise rename ou sed dans un script shell, ma seconde variable n&#8217;est pas prise en charge.<\/p>\n<p>En fait, la r\u00e9ponse est &#8230; vraiment&#8230; tr\u00e8s &#8230; simple. O\u00f9 b\u00eate ?<\/p>\n<p><!--more-->Le sc\u00e9nario est le suivant. J&#8217;ai des fichiers nommez xyz.??? avec diff\u00e9rentes extensions, mais le m\u00eame pr\u00e9fix. Je veux les renommer depuis un script shell.<\/p>\n<p>J&#8217;ai deux variables dans mon script: $ancien_nom et $nouveau_nom<\/p>\n<p>trouvez l&#8217;erreur.<\/p>\n<p>Avec sed:<\/p>\n<pre lang=\"bash\">for i in $ancien_nom.*;\r\ndo\r\n\tmv $i `echo $i | sed 's\/$ancien_nom\/$nouveau_nom\/'`\r\ndone<\/pre>\n<p>ou<\/p>\n<pre lang=\"bash\">for i in $ancien_nom.*;\r\ndo\r\n\tmv $i `echo $i | sed \"s\/$ancien_nom\/$nouveau_nom\/\"`\r\ndone<\/pre>\n<p>avec rename:<\/p>\n<pre lang=\"bash\">rename 's\/$vmtempname\/$vmname\/' $vmtempname.*<\/pre>\n<p>ou<\/p>\n<pre lang=\"bash\">rename \"s\/$vmtempname\/$vmname\/\" $vmtempname.*<\/pre>\n<p>Alors. Vous avez trouv\u00e9 ?<\/p>\n<p>Dans les deux cas, dans le premier exemple, on utilise des apostrophes pour encadrer l&#8217;expression perl, alors que dans le deuxi\u00e8me exemple, on utilise des guillements.<\/p>\n<p>H\u00e9 bien voil\u00e0 la raison pour laquelle je s\u00e8che depuis deux heures. Rageant, n&#8217;est-ce pas ?<\/p>\n<p>En fait, en utilisant les apostrophes, la seconde variable ($nouveau_nom) n&#8217;est pas prise en compte. Donc on finit par essayer de renommer $ancien_nom.* par $ancien_nom.*. Alors qu&#8217;avec les guillemets, tout se passe bien. Les myst\u00e8res du Shell. Si quelqu&#8217;un en connait la raison profonde, merci de laisser un commentaire explicatif.<\/p>\n<p>En r\u00e9sum\u00e9: Dans un script bash, pour encardrer une expression perl, il faut utiliser les guillemets, et non les apostrophes. CQFD<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voil\u00e0 deux heures que je cherche pourquoi diable lorsque j&#8217;utilise rename ou sed dans un script shell, ma seconde variable n&#8217;est pas prise en charge. En fait, la r\u00e9ponse est &#8230; vraiment&#8230; tr\u00e8s &#8230; simple. O\u00f9 b\u00eate ?<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[],"tags":[82,63,56,83,84,86,85,81],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/posts\/83"}],"collection":[{"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/comments?post=83"}],"version-history":[{"count":10,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/posts\/83\/revisions"}],"predecessor-version":[{"id":163,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/posts\/83\/revisions\/163"}],"wp:attachment":[{"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/media?parent=83"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/categories?post=83"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/tags?post=83"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}