Існує чистий та надійний спосіб sort | head
на сьогодні:
Використання ls -l
для симпатичного друку
find . ! -type d -printf "%T@ %p\0" |
sort -zrn |
head -zn 10 |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -lt
Як функція bash :
findByDate() {
local humansize=''
[ "$1" = "-h" ] && humansize='h' && shift
find . ${2:-! -type d} -printf "%T@ %p\0" |
sort -zrn |
head -zn ${1:--0} |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -dlt${humansize}
}
Це може бути запущено з одним або двома аргументами або навіть без:
Usage: findByDate [-h] [lines] [find options]
Зразок:
findByDate
Буде перераховано всі не каталоги, відсортовані за датою. Нота:
Навіть у великому дереві файлових систем, як xargs
отримують вже відсортований список, порядок файлів залишається правильним, навіть якщо його ls
потрібно виконувати багато разів.
findByDate -h 12
Буде перелічено ще 12 прийомів, які не містять каталогів, відсортовані за датами, розмір яких надрукований у читаному для людини вигляді
findByDate 42 '-type l'
Буде вказано ще 42 символи посилань
findByDate -0 '( -type l -o -type b -o -type s -o -type c )'
Буде перераховано всі посилання, блокувати пристрої, розетки та пристрої символів, відсортовані за датою.
Інвертування порядку
Заміна head
на tail
і змінити перемикач sort
і ls
:
findByDate() {
local humansize=''
[ "$1" = "-h" ] && humansize='h' && shift
find . ${2:-! -type d} -printf "%T@ %p\0" |
sort -zn |
tail -zn ${1:-+0} |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -dltr${humansize}
}
Та ж функція, те саме використання:
Usage: findByDate [-h] [lines] [find options]