1

我想将文件名从更改Sub****_Ses1HU_TT_12_****_UU; (**** 编号从 0001 到 1600)

我做了以下

#!/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
4

2 回答 2

1

for通配符不是这样工作的。用于cut提取号码。

$ 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
于 2016-02-15T08:09:19.120 回答
1

您可以使用 sed 和 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
于 2016-02-15T09:39:13.613 回答