2016-09-12 2 views
1

У меня есть файл с таким именем ims2015255_4km_GIS_v1.3.png так он показывает 255 день 2015 годаПереименовать файл с первого дня года, чтобы YYMMDD0000

Я хочу автоматически переименовать этот файл, чтобы прочитать, как это

SNC_obs_YYMMDD0000.png время быть всегда 0000

Большое спасибо.

ответ

1

Разбор оригинального названия довольно прост.

input=ims2015255_4km_GIS_v1.3.png 
[[ $input =~ ims(....)(...)_ ]] && year=${BASH_REMATCH[1]} day=${BASH_REMATCH[2]} 

Преобразование этого в новую дату может быть более сложным. Если у вас есть GNU date, хотя, вы можете использовать

output=$(date --date "$year-1-1 + $(($day - 1)) days" +"SNC_obs_%Y%m%d0000.png") 

Если вы не используете bash и ограничены POSIX-функций, определенных, попробуйте выполнить следующие действия, чтобы установить year и day.

tmp=${input#ims} 
tmp=${tmp%%_*} 
year=${tmp%???} 
day=${tmp#????} 
+0

скопировали то, что вы написали в test.sh сценарий, но он говорит мне ошибку: in.sh: 2: in.sh: ошибка синтаксиса: «(» неожиданный –

+0

Вы, кажется, не выполняя сценарий с 'bash'. – chepner

+0

скопировал это в .sh-скрипт, все еще не работает: #!/bin/sh input = ims2016001_4km_GIS_v1.3.png [[$ input = ~ ims (....) (. ..) _]] && year = $ {BASH_REMATCH [1]} день = $ {BASH_REMATCH [2]} output = $ (date -date "$ year-1-1 + $ (($ day - 1)) дней "+" SNC_obs_% Y% m% d0000.png ") #!/Bin/bash –

 Смежные вопросы

  • Нет связанных вопросов^_^