Como listar todos os arquivos de folha sob um diretório em ordem de tempo inversa?

1

Dado um diretório, como podemos listar todos os seus arquivos de folha na ordem inversa do tempo? ls -Rltr é o conteúdo de um subdiretório na ordem inversa do tempo, mas agrupa arquivos por subdiretório, o que quebra a exigência de listar todos os arquivos de folha (independentemente de seus diretórios pai) na ordem inversa do tempo. Obrigado.

    
por Tim 13.05.2015 / 14:26

1 resposta

5

com zsh :

printf '%s\n' **/*(D^om/:t)

Esses são qualificadores glob, um recurso exclusivo de zsh no momento.

  • D : inclua arquivos de pontos
  • ^ : inverta os seguintes qualificadores
  • om : pedido no momento da modificação (revertido com ^ )
  • / : exclude (com ^ ) arquivos do tipo diretório .
  • :t : um modificador que obtém o fim do arquivo (o nome da base).

(se você quiser o caminho completo em oposição a apenas o nome da base, basta remover :t ).

Com bash ou qualquer shell, desde que zsh esteja disponível:

zsh -c 'printf "%s\n" **/*(D^om/:t)'

ou em um sistema GNU:

find . ! -type d -printf '%T@\t%f
printf '%s\n' **/*(D^om/:t)
' | sort -zn | tr '\n
zsh -c 'printf "%s\n" **/*(D^om/:t)'
' '
find . ! -type d -printf '%T@\t%f%pre%' | sort -zn |
  tr '\n%pre%' '%pre%\n' | cut -f2- | tr '%pre%' '\n'
\n' | cut -f2- | tr '%pre%' '\n'

(se você quiser o caminho completo em oposição a apenas o nome da base, basta substituir %f por %P ou %p (o mesmo que ./%P here)).

    
por 13.05.2015 / 14:30

Tags