Требуется GNU awk для встроенных функций времени
gawk -F, -v OFS=, '
BEGIN {
# assumes english month names
split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", m, ",")
for (idx in m) months[m[idx]] = idx
delete m
}
function date2timestamp(datestamp, tmp,now,timestamp,year,hour,minute) {
now = systime()
split(datestamp, tmp, " ")
if (tmp[3] ~ /:/) {
year = strftime("%Y", now)
hour = substr(tmp[3], 1, 2)
minute = substr(tmp[3], 4, 2)
}
else {
year = tmp[3]
hour = minute = 0
}
timestamp = mktime(year " " months[tmp[1]] " " tmp[2] " " hour " " minute " 0")
if (timestamp > now)
timestamp = mktime((year-1) " " months[tmp[1]] " " tmp[2] " " hour " " minute " 0")
return strftime("%Y%m%d%H%M00", timestamp)
}
{
$1 = date2timestamp($1)
print
}
' file
выход
20171129151500,alert_logevent
20171129151500,alert_webhook
20171129151500,appsbrowser
20171020000000,ClearPassOnSplunk_2
20171010000000,Dnslookup
20171012000000,domainCategories
Ваш входной файл выглядит как результат разбораls -l
. Вы можете пропустить этот файл и сделать что-то вроде
stat -c '%Y,%n' * | gawk -F, -v OFS=, '{$1 = strftime("%Y%m%d%H%M%S", $1)}1'
Это небезопасно (в смысле обработки имен файлов с переводом строки ), но это даст вам точное mtime файла.
Я нашел решение, если не ответ.
Учитывая, что mbsync, похоже, выявлял некоторую скрытую нестабильность в моем Wi-Fi-соединении, я решил поэтапно просмотреть все возможные источники потенциальной нестабильности, о которых только мог подумать.
Первое, что я попробовал, это переключить базовую станцию Wi-Fi с широкого на узкий (20 МГц )канал, просто чтобы уменьшить вероятность помех (это радио 2,4 ГГц ).
Уже через пару часов я мог сказать, что это устранило проблему, так как запуски mbsync очень часто разрывали соединение.
Мне все равно было бы интересно услышать, если кто-то прочитает это, кто знает об этом, почему mbsync вызывает эту проблему, когда никакое другое использование сети не делает этого.