我有一堆如下所示的目录,每个目录中都有多个文件
.
├── 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+).......