У меня есть следующие файлы:

-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

Содержимое файлов содержит строку описания, за которой следуют данные, разделенные запятыми. Например:

Test1:

ID, Name, Job, Address
1111, John, Janitor, 1234 Corson Ave

Test2:

ID, Name, Job, Address
2222, Tim, Cashier, 3245 Elliot St

Может кто-нибудь предложить команду, которая объединит вышеуказанные файлы на основе даты изменения, игнорируя при этом первую строку в файле, которая является описанием (идентификатор, имя, должность, адрес).

Например, это то, что я хотел бы после сценария:

May_1_file_after_concatenate:

1111, John, Janitor, 1234 Corson Ave
2222, Tim, Cashier, 3245 Elliot St

То же самое для May5_file_after_concatenate . Каталог, который у меня есть, будет содержать много миллионов файлов. Мне нужно, чтобы он автоматически сортировал базу по дате изменения и соответствующим образом объединял их.

Я нахожусь на Centos 7.

1 ответ1

1

В bash вы можете использовать следующий скрипт:

#! /bin/bash
for file in "$@" ; do
    date=$(stat -c%y "$file" | cut -f1 -d' ')
    tail -n+2 "$file" >> "$date"
done

Он перебирает данные файлы, извлекает из него дату последней модификации, а затем добавляет все, начиная со строки 2, в файл с именем по дате.

Если в командной строке или в параметрах нужно разместить два файла, последовательно вызывайте сценарий для небольших групп файлов (с помощью xargs или вручную).

Преобразование формата даты должно быть простым :-)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .