Сочетание find
и ls
хорошо работает для
- имена файлов без переводов строк
- не очень большое количество файлов
- не очень длинные имена файлов
Решение:
find . -name "my-pattern" ... -print |
xargs -0 ls -1 -t |
head -1
Давайте разбить его:
С find
мы можем сопрягать все интересные файлы, как это:
find . -name "my-pattern" ...
затем с помощью -print0
мы можем передать все имена файлов безопасно для ls
как это:
find . -name "my-pattern" ... -print0 | xargs -0 ls -1 -t
ls -t
будет сортировать файлы по времени модификации (новейшим первым) и распечатать его по одной строке. Вы можете использовать -c
для сортировки по времени создания. Примечание: это сломается с именами, содержащими символы новой строки.
Наконец head -1
доставит нам первый файл в отсортированном списке.
Примечание:xargs
использовать системные ограничения для размера списка аргументов. Если этот размер превышает, xargs
будет называть ls
несколько раз. Это нарушит сортировку и, возможно, также окончательный вывод. Пробег
xargs --show-limits
, чтобы проверить пределы вашей системы.
см. Http://superuser.com/questions/294161/unix-linux-find-and-sort-by-date-modified для получения дополнительных ответных подсказок. Сортировка - это ключевой шаг для получения вашего новейшего файла. –