Je voudrais renommer plusieurs fichiers, mais pas simplement ajouter ma chaîne à la fin ou au début du fichier. Je voudrais le placer dans un endroit précis. C'est la commande avec laquelle je travaille actuellement, mais elle ne peut que rajouter des choses au début et à la fin du nom de fichier.fichier bash renommer ajouter une chaîne dans un emplacement spécifique
for f in `ls ~/tmp/*`; do FILE=`basename $f`; echo "Rename:"$f;echo $FILE; mv "$f" "/home/tmp/JC_"${FILE%.*}"_hg19."${FILE#*.}""; done
permet de dire que les noms de fichiers sont les suivants hell_1.txt
(et laisse dire qu'il ya une tonne d'entre eux chacun avec un nombre différent pour la simplicité) Je voudrais ajouter un o
dans le nom de fichier pour le nom résultant serait être hello_1.txt
ce serait bien si vous aviez une solution générale non seulement pour cet exemple.
désolé mais vous aurez besoin de m'expliquer cela un peu plus. Donc vous avez d'abord '(enfer.* \) 'Je devine que cela vous donne tout l'enfer (tout ce qui est ici le" 12 ")" _txt "(les nombres étant la variable changeante) (un petit changement par rapport au format original je suppose). Ensuite, vous faites défiler les nombres "_1.txt" "_2.txt" et ainsi de suite en gardant txt une constante (j'ai des extensions différentes pour des fichiers différents, donc quelque chose comme '$ {FILE # *.}' Fonctionne ici?) enfin, vous ajoutez le 'o' mais je ne suis pas clair ce que le 1 et 2 sont depuis le 12 était dans l'appel de caractères génériques? – crysis405
's # (quelque chose1 \) \ (quelque chose2 \) # \ 1o \ 2 #': dit à sed de correspondre à "something1something2" et '\ (... \)' délimite les zones et les place dans des registres (\ 1 étant le premier registre, \ 2 le 2ème, etc.). Donc, il dit: Pour chaque correspondance de lignes "quelque chose1 quelque chose2", placez dans le registre \ 1 "quelque chose1", placez dans le registre \ 2 "quelque chose2, puis remplacez par \ 1o \ 2 (remplacera par:" quelque chose1quelquechose2 "(comme: sed -e 's # REGEXP # replacement #' va chercher une expression rationnelle "REGEXP", et la remplacer par "replacement") –
si vous avez besoin de plus amples explications, s'il vous plaît demander (mais je ne serai pas en mesure de répondre avant la fin de soir, à moins que vous ne demandiez très bientôt ^^) –