我有许多具有以下名称详细信息的文件..
2007-07-22-2300-11S.NAN___024_ABI___HH_E_SAC
在哪里:
2007-07-22
是日期。2300-11S
是 hhmm-sec。NAN___024
每个文件的网络是否相同(新名称中不需要)。ABI__HH_E
是东频道的站名。SAC
是扩展。
而且,我想以相同的格式重命名所有文件:
2007.204.23.00.ABI.e
在哪里:
2007
是年。204
是朱利安日(07-22)。23.00
是时间。ABI
是车站。e
是频道名称。
答案1
假设你:
- 想要在位置 2 处使用“1 + 序数日期”。
- “_”填充的电台名称。
- 频道名称小写
然后这应该执行所需的转换。
$ ls
2007-07-22-2300-11S.NAN___024_ABI___HH_E_SAC
$ for i in *; do
od="$(expr $(date +%j -d "${i:0:10}") + 1 )";
chn="${i:39:1}";
sta="$(echo ${i:30:6} | tr -d '_')";
mv "$i" "${i:0:4}.$od.${i:11:2}.${i:13:2}.$sta.${chn,,}" ;
done
$ ls
2007.204.23.00.ABI.e
答案2
对于大规模重命名,prename
是您的朋友。在这种情况下:
prename 's/^(\d*)-(\d*-\d*)-(\d*)-.*___\d*_(\w*)___\w*_(\w*)_\w*/$1.$2.$3.$4.$5/' *
(在澄清相应问题之前忽略儒略日期)。