У меня есть следующие файлы:
-rw-r--r-- 1 xyz xyz 122 May 01 01:00 Test1
-rw-r--r-- 1 xyz xyz 122 May 01 01:00 Test2
-rw-r--r-- 1 xyz xyz 122 May 05 05:00 Test3
-rw-r--r-- 1 xyz xyz 122 May 05 05:00 Test4
Содержимое файлов содержит строку описания, за которой следуют данные, разделенные запятыми. Например:
Тест1:
ID, Name, Job, Address
1111, John, Janitor, 1234 Corson Ave
Тест2:
ID, Name, Job, Address
2222, Tim, Cashier, 3245 Elliot St
Может ли кто-нибудь предложить команду, которая объединит указанные выше файлы на основе даты изменения, игнорируя первую строку в файле, которая является описанием (ID, Имя, Работа, Адрес).
Например, вот что я хотел бы получить после скрипта:
May_1_file_after_concatenate:
1111, John, Janitor, 1234 Corson Ave
2222, Tim, Cashier, 3245 Elliot St
То же самое для May5_file_after_concatenate
. Каталог, который у меня есть, будет содержать много миллионов файлов. Мне нужно, чтобы он автоматически сортировался по дате изменения и объединял их соответствующим образом.
У меня Centos 7.
решение1
В bash
, вы можете использовать следующий скрипт:
#! /bin/bash
for file in "$@" ; do
date=$(stat -c%y "$file" | cut -f1 -d' ')
tail -n+2 "$file" >> "$date"
done
Он перебирает указанные файлы, извлекает из них дату последнего изменения, а затем добавляет все, начиная со строки 2, в файл, названный по дате.
Если необходимо поместить в командную строку или параметры два множества файлов, последовательно вызывайте скрипт для меньших групп файлов (с помощью xargs
или вручную).
Преобразование формата даты должно быть простым :-)