Пример замены:
$ echo "gost_01.02.2010.txt" | sed -r 's/([[:alpha:]]+)_([0-9]{2})\.([0-9]{2})\.([0-9]{4})\.txt$/\1_\4\.\3\.\2\.txt/g' gost_2010.02.01.txt
Тут используется команда
sed
'a s/regexp/replacement/flags.С помощью регулярного выражения (
regexp
) ищутся и разбиваются по группам интересующие нас поля. Затем исходная строка заменяется на replacement
, в данном случае просто переставляем найденные группы и получаем нужное имя файла. Флаг g
можно тут и не использовать, он нужен для замены всех совпадений.Переименование всех файлов, начинающихся с «gost» в данном каталоге:
for file in ./gost* do mv ${file} `echo ${file} | sed -r 's/([[:alpha:]]+)_([0-9]{2})\.([0-9]{2})\.([0-9]{4})\.txt$/\1_\4\.\3\.\2\.txt/g'` done
Ссылки по теме:
Комментариев нет :
Отправить комментарий