Отсортировать вывод по дате в именах файлах

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

sedikpoll
Сообщения: 100

Отсортировать вывод по дате в именах файлах

Сообщение sedikpoll »

Необходимо корректно отсортировать вывод по дате в именах файлах.
На данный момент вывод такой:

ls *finished.txt | sort

Код: Выделить всё

nmap_192.168.40.0_24_03-04-2013_ping_finished.txt
nmap_192.168.40.0_24_06-02-2013_ping_finished.txt
nmap_192.168.40.0_24_06-03-2013_ping_finished.txt
nmap_192.168.40.0_24_13-02-2013_ping_finished.txt
nmap_192.168.40.0_24_13-03-2013_ping_finished.txt
nmap_192.168.40.0_24_18-02-2013_ping_finished.txt
nmap_192.168.40.0_24_20-03-2013_ping_finished.txt
nmap_192.168.40.0_24_27-02-2013_ping_finished.txt
nmap_192.168.40.0_24_27-03-2013_ping_finished.txt


Сортировка логична, но нужно получить следующие:

Код: Выделить всё

nmap_192.168.40.0_24_03-04-2013_ping_finished.txt
nmap_192.168.40.0_24_27-03-2013_ping_finished.txt
nmap_192.168.40.0_24_20-03-2013_ping_finished.txt
nmap_192.168.40.0_24_13-03-2013_ping_finished.txt
nmap_192.168.40.0_24_06-03-2013_ping_finished.txt
nmap_192.168.40.0_24_27-02-2013_ping_finished.txt
nmap_192.168.40.0_24_18-02-2013_ping_finished.txt
nmap_192.168.40.0_24_13-02-2013_ping_finished.txt
nmap_192.168.40.0_24_06-02-2013_ping_finished.txt


т.е. файл создается раз в неделю и в его имени дата.
С такой сортировкой (которая присутствует на данный момент) я не могу корректно сравнивать
(diff -c `ls *finished.txt | sort |tail -2|head -1` `ls *finished.txt | sort |tail -1) содержание последнего и предпоследнего файла.

Подскажите, пожалуйста, решение для корректной сортировки.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5410
ОС: Gentoo

Re: Отсортировать вывод по дате в именах файлах

Сообщение /dev/random »

sed 's/.*_\(..\)-\(..\)-\(....\)_.*/\3-\2-\1 &/'
И сортируйте.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Отсортировать вывод по дате в именах файлах

Сообщение SLEDopit »

Код: Выделить всё

ls -1 | sed 's/_/-/3'|  sort -n -t- -k3 -k2 -k4 -r | sed 's/-/_/'
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
lazhu
Сообщения: 70
ОС: FreeBSD 9-STABLE / clang 3.3

Re: Отсортировать вывод по дате в именах файлах

Сообщение lazhu »

Код: Выделить всё

ls | sort -t '_' -k 4 -r
Спасибо сказали: