Как использовать команду find с сортировкой по дате и времени создания? - PullRequest
0 голосов
/ 28 марта 2019

Я много раз пытался решить эту проблему.
Результаты команды find не заботятся о порядке размещения.

Как использовать список каталогов на основе даты и времени создания из результата поиска рекурсивной команды?

ls -lc  

Это работает хорошо, но не рекурсивно.

find . -type f -iname "*.txt" -exec ls -lc {} \; 

Это не работает.

find . -type f -iname "*.txt" | sort -n 

Это также только на основе имени.

1 Ответ

2 голосов
/ 28 марта 2019

решение из https://superuser.com/q/294161/992527 в сочетании с командой из вопроса:

find . -type f -iname "*.txt" -printf "%T@ %Tc %p\n" | sort -n

См. Различные ответы для вариантов команды.
Пояснение, приведенное в ссылочном вопросе:

printf аргументы от man find:

  • %Tk: время последнего изменения файла в формате, заданном k.

  • @: секунды с 1 января 1970 г., 00:00 по Гринвичу, с дробной частью.

  • c: локальдата и время (сб. 04.12. 12:02:33 EST 1989).

  • %p: имя файла.

Решение для MacOS скопировано из комментария @cooljobs к вопросу

find . -type f -iname "*.txt" -exec stat -f '%B %m %N' {} \; | rev | cut -d '/' -f 1 | rev | sort -n 
...