Як я можу змусити `find` знаходити файли у зворотному хронологічному порядку?


17

Я хочу знайти файли у підкаталогах, відсортованих за часовою міткою (створення), із першою останньою.

Я переглянув сторінку man, але, здається, лише дозволяє вам фільтрувати за часовою міткою, а не сортувати за часовою міткою.

Які варіанти я можу пройти, findщоб досягти цього? Як варіант я можу поєднувати його з іншим інструментом, як sortсортувати за часовою міткою?


1
Ви не можете зробити findщо-небудь у визначеному відсортованому порядку, крім вибору між глибинним першим пошуком та широтою першого пошуку.
Джонатан Леффлер

@ merlin2011, перегляньте свій вибір відповідей тут - обрана на даний момент відповідь є помилковою (генерує результати, які насправді неправильно відсортовані), коли знайдено більше файлів, findніж можна передати в один екземпляр ls.
Чарльз Даффі

@CharlesDuffy, Дякую за замітку! Я оновив прийняті відповіді.
merlin2011

Відповіді:


32

Хоча рішення Пола, як правило, добре, воно включає більше вводу / виводу, ніж просто:

find bin/ -type f -printf '%Ts\t%p\n' | sort -nr | cut -f2

Що робити, якщо findповертає мільйони файлів? Хіба не будемо сортувати їх усіх як один дуже довгий список? Це все ще буде ефективним? (Замість того, щоб сортувати кожен каталог самостійно.)
Пітер Мортенсен

1
Не працює зі смішними символами в іменах файлів, як нові рядки
Борис Бродський

2
Це заслуговує лише на коментар до відповіді user7385, але я не маю репутації цього робити. find bin/ -type f -printf '%Ts\t%p\0' | sort -nrz | cut -f2 -z | xargs -0 lsНові версії cutмають опцію -z, тому назви файлів з новими рядками спрацюють.
МеттБліссет

Кількість вводу-виводу навіть не є основною причиною віддавати перевагу цій відповіді - правильність є набагато критичнішою відмінністю. xargs -0 ls -tПідхід не буде працювати правильно , коли є так багато файлів , які xargsнеобхідно почати lsбільш ніж один раз, але цей підхід буде продовжувати функціонувати.
Чарльз Даффі

@PeterMortensen "сортування їх усіх як один дуже довгий список" - єдиний спосіб їх сортування, який фактично повертає правильний результат. Більше того, інша / прийнята відповідь також не "сортує кожну директорію незалежно" (якщо хотілося б сортувати лише одну директорію без повторної повторної роботи, можна використати -maxdepth 1на find).
Чарльз Даффі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.