Como obtenho arquivos encontrados pela linha de comando 'find' ordenados por data de modificação no OS X?

13

Usando o Mac OS X Terminal, como escrevo um findcomando que ordena os resultados por data de modificação (a mais recente primeiro)?

Já existem perguntas semelhantes, mas elas se referem ao GNU finde POSIX, mas não sei se o Mac OS X é GNU ou POSIX ou algo mais.

zadam
fonte

Respostas:

16

O OS X é totalmente compatível com POSIX .

Algo assim deve fazer:

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

Algumas notas:

  • A -topção em lsserá classificada por mtime.
  • xargsé usado para passar os nomes de arquivos como argumento para ls. Observe que você deve usar -print0in finde -0in xargsse tiver arquivos com espaços em seus nomes. Além disso, a quantidade máxima de argumentos é limitada pela ARG_MAXvariável . Para descobrir quantos são, digite getconf ARG_MAX.
  • Você pode fornecer -rpara reverter a ordem de classificação (→ arquivos mais antigos primeiro)
  • As outras opções finde ls- como sempre - estão descritas nos manuais ( man findou man ls).
slhck
fonte
ls -ltrpara reverter a ordem.
Daniel Beck
O Xe só os classifica em grupos de (ligeiramente menos que) ARG_MAXcaracteres de nome de arquivo dessa maneira, é claro.
JdeBP
Sim, obrigado pela adição @JdeBP e Daniel. getconf ARG_MAXmostrará esse número.
slhck
ah meu problema agora é que estou usando esse comando em um AppleScript e usando o resultado para ler o conteúdo desse arquivo. Mas agora o resultado contém informações de data, não apenas o nome do arquivo: do shell script "find / Users / akw / Library / Preferences / ByHost / -name 'com.apple.windowserver *' -print0 | xargs -0 ls -tl | head -1 "retorna isso ->" -rw ------- @ 1 akw staff 5512 19 de jun 07:52 /Users/akw/Library/Preferences/ByHost//com.apple.windowserver.1FC3A841-2C0C- 5F48-B746-1DEE064F6D12.plist "
zadam
@zadam então use em ls -tvez de ls -tl. O -lfornece uma lista longa, incluindo as datas. Eu não sabia o que você estava tentando fazer exatamente, desculpe-me por isso - presumi que você gostaria de ver mtimetambém.
slhck