Мой лучший ответ на этот вопрос:
IFS="#"; ((
for s_date in $(echo ${date1}' +'{1..7}' days#'); do
date -d "${s_date}";
done
) | grep Sat
) | xargs -I {} date +%d-%b-%Y -d "{}"
Выход:
05-Sep-2015
Это создает список из #
разделенных строк, таких как:
"30-AUG-2015 +1 days# 30-AUG-2015 +2 days# 30-AUG-2015 +3 days#..."
Затем этот список зацикливается и передается в date
, где я могу grep
указать день, который я ищу, (, например. Сб ). Наконец, я могу использовать xargs
для преобразования вывода в формат, который вы ищете. Для удобства код можно поместить в одну строку.
Это похоже на то, для чего git bundle
подойдет.
Он может создать файл, представляющий изменения в репозитории с течением времени, который можно записать на компакт-диск для передачи на удаленную машину. Затем эти изменения можно применить к удаленному местоположению.
EXAMPLES
Assume you want to transfer the history from a repository R1 on machine A to another repository R2 on machine B. For whatever reason, direct connection between A and B is not allowed, but we can move data from A to B via some mechanism (CD, email, etc.). We want to update R2 with development made on the branch master in R1.
документы пакета git находятся здесь
Вы могли бы использовать rsync --write-batch=FILE
для этого требования, но я думаю, что всего 350 МБ, отправляемых на компакт-диске, это, вероятно, излишество. (Отправляете ли вы 150 МБ или 350 МБ, в значительной степени не имеет значения; он по-прежнему занимает один компакт-диск.)
Если бы вы использовали rsync
таким образом, вам нужно было бы поддерживать локальную копию папки данных, с которой можно было бы сравнивать входящие измененные файлы. Вывод изменения набора -будет записан в FILE
и затем может быть применен к удаленному целевому ПК с помощью rsync --read-batch=FILE
.
Лучшей рекомендацией было бы использовать дату/время и размер изменения файла, чтобы позволить cp
определить, какие файлы в коллекции были обновлены, и просто скопировать их с компакт-диска.
cp -u -r --preserve=timestamps /media/CD /path/to/target/folder
Флаг -u
здесь обновляет только файлы, которые являются более новыми в исходном коде, а комбинация -r --preserve=timestamps
гарантирует, что рассматривается все дерево каталогов, при этом каждый скопированный файл сохраняет свои временные метки.