2016-02-15 5 views
1

Je voudrais changer le nom du fichier Sub****_Ses1-HU_TT_12_****_UU; (**** numérotée 0001-1600)Quel est le problème avec mon code de nommage de liste?

J'ai fait ci-dessous

#!/bin/sh 
#Change file name 

Subj_id=/Users/dave/biomark/dat 

cd Subj_id 

for abcd in Sub****_Ses1; do 

mv Sub$a$b$c$d_Ses1 HU_TT_12_$a$b$c$d_UU; 

done 
+0

Bonjour HelpMe! Bienvenue à SO! Vous avez posé une question valide. En voyant vos commentaires sur les réponses, les votes positifs sont des réponses utiles et bonnes. Ils ne doivent pas être utilisés pour montrer de la gratitude (sauf si la réponse est bonne). Lisez l'article d'aide sur [Quand utiliser upvote] (http://stackoverflow.com/help/privileges/vote-up). – NSNoob

+0

Merci. La réponse a été utile et voulait voter. Mal attendre d'avoir assez de réputation. – tsumaranaina

Répondre

1

for et wildcards ne fonctionne pas comme ça . Utilisez cut pour extraire le numéro.

$ touch Sub000{1,2,3,4}_Ses1 
$ for f in Sub????_Ses1  
do 
    abcd=$(echo $f | cut -b4-7) 
    mv $f HU_TT_12_${abcd}_UU 
done 
$ ls HU_TT_12_000* 
HU_TT_12_0001_UU HU_TT_12_0002_UU HU_TT_12_0003_UU HU_TT_12_0004_UU 
+0

J'ai 1600 fichiers. devrais-je faire HU_TT_12_0001_UU HU_TT_12_0002_UU HU_TT_12_0003_UU HU_TT_12_0004_UU jusqu'à HU_TT_12_1600_UU ??! ou cela fonctionnera-t-il tous? Aussi qu'avez-vous seulement * le dernier chiffre ($ ls HU_TT_12_000 *)? – tsumaranaina

+0

Je ne comprends pas. Le caractère générique 'Sub ???? _ Ses1' correspond à * tous * ces fichiers. Vous n'avez pas à les nommer. –

+0

Je me demande pourquoi l'avez-vous ajouté? HU_TT_12_0001_UU HU_TT_12_0002_UU HU_TT_12_0003_UU HU_TT_12_0004_UU jusqu'à HU_TT_12_1600_UU? – tsumaranaina

1

Vous pouvez utiliser sed et mv

 #!/bin/bash 
     set -x 
     Subj_id=/Users/dave/biomark/dat 
     cd $Subj_id 

     for i in Sub*_Ses1 ; do 
     #echo $i|sed -r 's/^.*\([[:digit:]]{4}\).*/HU_TT_12_\1_UU/' 
     mv $i $(echo $i|sed -rn 's/^.*([[:digit:]]{4}).*/HU_TT_12_\1_UU/ p') 
     done 
+0

Je me sens mal pour ne pas être en mesure de voter pour les gens qui m'aident..Désolé! – tsumaranaina

+0

Pas de problème ... Vous pouvez upvote, quand vous avez assez de réputation – Varun