Istnieje czysty i solidny sposób na sort | head
datowanie:
Używanie ls -l
do ładnego wydruku
find . ! -type d -printf "%T@ %p\0" |
sort -zrn |
head -zn 10 |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -lt
Jako funkcja 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}
}
Może to być uruchamiane z jednym lub dwoma argumentami, a nawet bez:
Usage: findByDate [-h] [lines] [find options]
Próba:
findByDate
Wyświetla listę wszystkich katalogów nie posortowanych według daty. Nota:
Nawet na dużym drzewie systemów plików, jak xargs
już otrzymano posortowaną listę, kolejność plików pozostaje poprawna, nawet jeśli ls
trzeba ją uruchamiać wiele razy.
findByDate -h 12
Wymienione zostanie jeszcze 12 ostatnich nie katalogów posortowanych według daty, z rozmiarem wydrukowanym w formie czytelnej dla człowieka
findByDate 42 '-type l'
Wymienię 42 ostatnie ostatnie dowiązania symboliczne
findByDate -0 '( -type l -o -type b -o -type s -o -type c )'
Wyświetla listę wszystkich dowiązań symbolicznych, urządzeń blokujących, gniazd i znaków, posortowanych według daty.
Odwracanie kolejności
Wymiana head
przez tail
i zmienić przełącznik sort
i 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}
}
Ta sama funkcja, to samo użycie:
Usage: findByDate [-h] [lines] [find options]