Объединение содержимого списка текстовых файлов, отсортированных по субсекундной дате изменения

#unix #text

#unix #текст

Вопрос:

Предположим, у меня есть несколько десятков текстовых файлов с очень близким временем изменения (<1 секунды друг от друга), и я хочу объединить их в один текстовый файл, соблюдая хронологический порядок (сначала самый старый файл).). Как я могу это сделать? ls не кажется надежным (я получаю файлы, отсортированные по секундам, но мои хронологические интервалы меньше секунды). Статистика и сортировка дают мне точный список:

stat -c '%y -- %n' my_file_pattern | sort

но как мне тогда обработать файлы (предположительно, используя cat)? Я думаю, я мог бы разделить список с помощью sed и регулярного выражения, а затем передать в xargs, но есть ли простой метод?

Ответ №1:

Попробуйте вместо этого использовать find, и так:

 while read fil;
do 
   cat ${fil##*/};   
done <<< "$(find . -maxdepth 1 -name "*.txt" -printf "%Ts/%fn" | sort -n)"
 

Используйте find для печати всех текстовых файлов в текущем каталоге, отформатированных с использованием даты в формате эпохи, символа «/» и имени файла. Передача выходных данных через sort -n . Перенаправить вывод в цикл while. Используйте ${fil##*/}, чтобы извлечь только имя файла из выходных данных find и cat the file.