Come posso elencare tutti i file in una directory e sottodirectory in ordine cronologico inverso?

StackOverflow https://stackoverflow.com/questions/4909751

  •  29-10-2019
  •  | 
  •  

Domanda

Voglio fare qualcosa di simile ls -t ma hanno anche i file nelle sottodirectory inclusi. Ma il problema è che non voglio che l'output sia formato come ls -R fa, che è così:

[test]$ ls -Rt
b       testdir test

./testdir:
a

Voglio che sia formattato come il find Il comando visualizza i file nelle sottodirectory. Cioè:

[test]$ find .
.
./b
./test
./testdir
./testdir/a

Ma cosa find Non sembra fare è ordinare il risultato cronologicamente entro l'ultimo tempo di aggiornamento.

Quindi come posso elencare tutti i file in una directory e sottodirectory, nel formato che find Ma in ordine cronologico inverso?

È stato utile?

Soluzione

Prova questo:

find . -type f -printf "%T@ %p\n" | sort -nr | cut -d\  -f2-

Altri suggerimenti

ls -lR è visualizzare tutti i file, le directory e le sotto -directory nella directory homels -lR | more viene utilizzato per mostrare tutti i file in un flusso.

Se il numero di file che si desidera visualizzare si adatta al limite di argomento massimo, è possibile utilizzare Globbing per ottenere ciò che desideri, con ricorsione se si dispone del supporto Globstar.

Per esattamente 2 livelli di uso profondo: ls -d * */*

Con Globstar, per l'uso di ricorsione: ls -d **/*

Il -d argomento a ls gli dice di non ricorrere alle directory passate come argomenti (poiché si sta usando il globo shell per fare la ricorsione). Questo impedisce ls usando la sua formattazione di ricorsione.

find -type f -print0 | xargs -0 ls -t

Svantazioni: funziona solo per una certa quantità di file. Se hai quantità estremamente grandi di file hai bisogno di qualcosa di più complicato

Provarefind . -type dofind . -type d -ls

prova questo:

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total' |sed '/^$/d'

Il comando in Risposta di WFG5475 funziona correttamente, è solo necessario aggiungere una cosa per mostrare solo file in una directory di directory e sottofondo:

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total|^d' |sed '/^$/d'

Aggiunta una cosa: ^d Per ignorare tutte le directory dagli output di elenco

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top