Połączenie find
i ls
działa dobrze dla
- nazwach bez nowej linii
- niezbyt dużą ilością plików
- niezbyt długie nazwy plików
Rozwiązanie:
find . -name "my-pattern" ... -print |
xargs -0 ls -1 -t |
head -1
Złammy go:
Z find
możemy dopasować wszystkie interesujące pliki tak:
find . -name "my-pattern" ...
następnie używając -print0
możemy przekazać wszystkie nazwy plików bezpiecznie do ls
tak:
find . -name "my-pattern" ... -print0 | xargs -0 ls -1 -t
ls -t
posortuje pliki według czasu modyfikacji (najnowszy pierwszy) i wydrukuj go w wierszu. Możesz użyć -c
do sortowania według czasu utworzenia. Uwaga: spowoduje to zerwanie nazw plików zawierających znaki nowej linii.
Wreszcie head -1
dostaje nam pierwszy plik na posortowanej liście.
Uwaga:xargs
stosuje ograniczenia systemowe do rozmiaru listy argumentów. Jeśli rozmiar ten przekroczy, xargs
zadzwoni pod numer ls
wiele razy. Spowoduje to przerwanie sortowania i prawdopodobnie także ostatecznego wyniku. Przeprowadź
xargs --show-limits
, aby sprawdzić limity w swoim systemie.
patrz http://superuser.com/questions/294161/unix-linux-find-and-sort-by-date-modyfikowany, aby uzyskać więcej wskazówek dotyczących odpowiedzi. Sortowanie jest kluczowym krokiem, aby uzyskać najnowszy plik –