LINUX.ORG.RU

Рекурсивный список файлов с сортировкой по времени


0

0

Требуется построчно вывести полные пути и имена файлов с сортировкой по времени изменения. Пример для директории /etc:

/etc/protocols

/etc/cron.daily/logrotate

/etc/inputrc

/etc/mail/access

/etc/rc.d/rc.sendmail

/etc/syslog.conf

...

Как известно, основные утилиты для листинга файлов в линуксе это ls и find. Но вот в чем проблема: ls не умеет рекурсивно выводить полные пути, а find не умеет сортировку ... :-(

Пока решил проблему с помощью команды:

find /etc -type f -printf "%T@ %p\n" | sort -n | cut -d " " -f 2

Т.е. сначала find выводит время изменения в unixtime, затем полный путь файла. Далее производится сортировка этого списка и при выводе первое поле с датой вырезается.

Так работает, но команда выглядит как-то некузяво. Может кто-то подскажет более очевидное решение?


Ответ на: комментарий от sdio

Если суммарная длина имен не будет превышать 32 КиБ (или 128, предел зависит от системы), то все будет хорошо.

sjinks ★★★
()

>Может кто-то подскажет более очевидное решение

Это и есть самое очевидное решение. Ждать, что во все утилиты встроят всю [нужную сейчас и в будущем] ф-ность других утилит стоит на более далёких от юниксвейности форумах.

DonkeyHot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.