#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.