Попробуйте что-то вроде этого:
template
std::vector merge(std::initializer_list*> vecs)
{
size_t size = 0;
for(auto v : vecs) { size += v->size(); }
std::vector ret;
ret.reserve(size);
for(auto v : vecs) { ret.insert(ret.end(), v->begin(), v->end()); }
return ret;
}
std::vector a = {"a", "b"};
std::vector b = {"c", "d"};
std::vector c = {"e", "f"};
std::vector d = {"g", "h"};
std::vector newVector = merge({&a, &b, &c, &d});
Альтернативно:
template
std::vector merge(std::initializer_list>> vecs)
{
size_t size = 0;
for(auto &v : vecs) { size += v.get().size(); }
std::vector ret;
ret.reserve(size);
for(auto &v : vecs) { ret.insert(ret.end(), v.get().begin(), v.get().end()); }
return ret;
}
[1110 ]
std::vector a = {"a", "b"};
std::vector b = {"c", "d"};
std::vector c = {"e", "f"};
std::vector d = {"g", "h"};
std::vector newVector = merge({std::cref(a), std::cref(b), std::cref(c), std::cref(d)});
Только в течение времени изменения
if test `find "text.txt" -mmin +120`
then
echo old enough
fi
Или, то же в одной строке:
#!/bin/bash
find text.txt -mmin +120 -exec echo "old enough" \;
можно использовать -cmin
для изменения или -amin
в течение времени доступа. Поскольку другие указали на меня, don’t думают, что можно отследить время создания.
Время создания не хранится.
, Что хранится, три метки времени (обычно, они могут быть выключены в определенных файловых системах или определенными опциями файловой системы):
"Изменение" в файле считается, когда разрешение изменяется, переименуйте и т.д., В то время как модификация является содержанием только.
Считайте результат инструмента 'статистикой':
File: `infolog.txt'
Size: 694 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 11635578 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ fdr) Gid: ( 1000/ fdr)
Access: 2009-01-01 22:04:15.000000000 -0800
Modify: 2009-01-01 22:05:05.000000000 -0800
Change: 2009-01-01 22:05:05.000000000 -0800
Вы видите здесь, что эти три даты Получают доступ/изменяют/изменяют. Нет никакой созданной даты. Можно только действительно быть уверены, когда содержание файла было изменено ("изменить" поле) или его измененный inode (поле "изменения").
Примеры того, когда оба поля обновляются:
"Изменяют", будет обновлен, если кто-то связал дополнительную информацию в конец файла.
"Изменение" будет обновлено если кто-то измененные полномочия через chmod.
Использование stat
для определения даты последней модификации файла, date
для определения текущего времени и либерального использования башизмов, можно выполнить желаемый тест на основе времени последнего изменения файла 1 .
if [ "$(( $(date +"%s") - $(stat -c "%Y" $somefile) ))" -gt "7200" ]; then
echo "$somefile is older then 2 hours"
fi
Хотя код немного менее читабелен, чем подход find
, я думаю, что он лучше затем выполните команду find
, чтобы просмотреть файл, который вы уже "нашли". Кроме того, манипулирование датами - это весело; -)
% Z
вместо % Y
ниже, чтобы получить «время изменения», которое может быть то, что вы хотите. [Обновление]
Для пользователей Mac используйте stat -f "% m" $ somefile
вместо синтаксиса Linux, описанного выше