重命名不同文件夹中的文件名

重命名不同文件夹中的文件名

我有一堆如下所示的目录,每个目录中都有多个文件

.
 ├── 20150320
 ├── 20150321
 ├── 20150322
 ├── 20150323
 ├── 20150324
 ├── 20150325
 ...

然后我编写了一个小脚本来循环每个目录中的每个文件并将文件转换为另一种格式,例如:

#!/bin/sh

path="/home/juve/Projectes/leon_CC"

echo "SAC conversion"

for folder in $path/*/; do
  cd $folder
  Files=*BHZ
  for f in *BHZ; do
     /opt/mseed2sac-2.3/mseed2sac -v -C HHZ $f
     rm -r $f
  done
done

转换输出一个我想要修改的文件名,格式为 CA.UTG2..HHZ.D.2015.080.225956.SAC.我需要的是将其重命名为文件扩展名2015.080.225956.UTG2.HHZ.SAC所在的位置。SAC

我正在用rename-perl这个。目前我已经使用了以下方法并取得了不同的成功:

rename -n 's/.{3}(.*)/$1/'产生UTG2..BHZ.D.2015.080.225956.SAC这是我需要的一部分。

如果尝试也会rename -n 's/(.+)(.+)(.+)(.+)(.+)(.+)(.+)(\.SAC)/$4$5$6$1$2'产生错误Substitution replacement not terminated at line 1, in:

任何提示将不胜感激。

编辑:我找到了答案:

rename -n 's/(.+)\.(.+)\.(.+)\.(.+)\.(.+)\.(.+)\.(.+)(\.SAC)/$5.$6.$7.$2$3$8/'

感谢所有的投入

答案1

你错过了最后一个/:

rename -n 's/(.+)(.+)(.+)(.+)(.+)(.+)(.+)(\.SAC)/$4$5$6$1$2/' CA.UTG2..HHZ.D.2015.080.225956.SAC
#                                                          ^

你需要你的正则表达式,例如:

(\d+)\.(\d+)\.(\d+).......

相关内容