2016-02-03 3 views
0

У меня есть файлы с именами, которые содержат дату, но эта часть даты находится в неправильном формате, и мне нужно ее изменить. Файлы примеров:Переименовать кучу файлов в сценарии bash

foo-1-21-01-16.tar 
foo-1-22-01-16.tar 
foobar-1-21-01-16.tar 
foobar-1-22-01-16.tar 

Результат, который я хочу, чтобы иметь должен выглядеть следующим образом:

foo-1-16-01-21.tar 
foo-1-16-01-22.tar 
foobar-1-16-01-21.tar 
foobar-1-16-01-22.tar 

Итак, что я хочу сделать, это изменить место «день» часть с места «год» часть. Но я не могу понять, как это сделать. Существует более нескольких файлов, поэтому я не могу сделать это вручную.

ответ

1

Вы бы предложили использовать AWK. Пример:

echo "foo-1-21-01-16.tar" | awk -F'[-.]' '{printf "bar-%s-%s-%s-%s.%s", $2, $5, $4, $3, $6 }' 

приведет к bar-1-16-01-21.tar. Параметр -F указывает awk разделить каждую строку ввода на - или .. После разделения, $1 = foo, $5 = year и т. Д. Используйте print, чтобы перекомпоновать имя файла с каждым полем в другом порядке.

От Баш скрипт в итерацию через ваши файлы, использовать команду для создания нового файла, а затем использовать mv переименовать файл. Скажите, нужен ли вам пример кода.

+0

Итерация файлов или использование mv не проблема. Я мало знаю об awk, и я просто не мог понять эту часть о переключении мест в имени файла. Теперь я могу работать с тем, что вы мне дали. Благодаря! :) – n0zz

+0

Вы приветствуете ^^, счастливое кодирование! – Derlin

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