Как я могу получить файлы, найденные командной строкой 'find', упорядоченные по дате модификации в OS X?

13

Используя терминал Mac OS X, как мне написать findкоманду, которая упорядочивает результаты по дате изменения (сначала самое последнее)?

Уже есть подобные вопросы, но они относятся к GNU findи POSIX, но я не знаю, является ли Mac OS X GNU или POSIX или чем-то еще.

zadam
источник

Ответы:

16

OS X полностью совместима с POSIX .

Нечто подобное должно делать:

find . -type f -name "*.txt" -print0 | xargs -0 ls -tl

Некоторые заметки:

  • -tВариант в lsсортируют по mtime.
  • xargsиспользуется для передачи имен файлов в качестве аргумента ls. Обратите внимание, что вы должны использовать -print0в findи -0в, xargsесли у вас есть файлы с пробелами в их именах. Также максимальное количество аргументов ограничено ARG_MAXпеременной . Чтобы узнать, сколько их, введите getconf ARG_MAX.
  • Вы можете указать -rобратный порядок сортировки (→ сначала самые старые файлы)
  • Другие findи lsопции - как обычно - изложены в руководствах ( man findили man ls).
slhck
источник
ls -ltrотменить заказ.
Даниэль Бек
Разумеется, Xe будет сортировать их только по группам (чуть меньше) ARG_MAXсимволов имени файла.
JdeBP
Да, спасибо за добавление @JdeBP и Дэниела. getconf ARG_MAXпокажет этот номер.
slhck
Теперь моя проблема в том, что я использую эту команду в appleScript и использую результат для чтения содержимого этого файла. Но теперь результат содержит информацию о дате, а не только имя файла: выполните сценарий оболочки «find / Users / akw / Library / Preferences / ByHost / -name» com.apple.windowserver * '-print0 | xargs -0 ls -tl | head -1 "возвращает это ->" -rw ------- @ 1 akw staff 5512 19 июня, 07:52 /Users/akw/Library/Preferences/ByHost//com.apple.windowserver.1FC3A841-2C0C- 5F48-B746-1DEE064F6D12.plist "
zadam
@zadam тогда используйте ls -tвместо ls -tl. Это -lдает вам длинный список, включая даты. Я не знал, что именно вы пытались сделать, так что извините за это - я предполагал, что вы тоже хотели бы посмотреть mtime.
slhck