Jak wyświetlić listę wszystkich plików w katalogu i podkatalogach w odwrotnej kolejności chronologicznej?

Chcę zrobić coś takiego jak ls -t ale również mieć włączone pliki w podkatalogach. Ale problem polega na tym, że nie chcę, aby wyjście było sformatowane tak, jak ls -R robi, co jest takie:

[test]$ ls -Rt
b       testdir test

./testdir:
a

Chcę, aby było sformatowane tak, jak polecenie find wyświetla pliki w podkatalogach. I. E:

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

Ale to, co find nie wydaje się robić, to uporządkować wynik chronologicznie według czasu ostatniej aktualizacji.

Więc jak Mogę wylistować wszystkie pliki w katalogu i podkatalogach, w formacie tak, ale w odwrotnej kolejności chronologicznej?

 46
Author: dan, 2011-02-06

7 answers

Spróbuj tego:

find . -type f -printf "%T@ %p\n" | sort -nr | cut -d\  -f2-
 31
Author: marco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-05 22:00:56

ls -lR jest wyświetlanie wszystkich plików, katalogów i podkatalogów w katalogu domowym ls -lR | more jest używany do wyświetlania wszystkich plików w przepływie.

 65
Author: rashmi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-26 11:46:03

Jeśli liczba plików, które chcesz wyświetlić mieści się w maksymalnym limicie argumentów, możesz użyć globbingu, aby uzyskać to, co chcesz, z rekurencją, jeśli masz wsparcie globstar.

Dla dokładnie 2 warstw głębokiego użycia: ls -d * */*

Z globstar, dla rekurencji użyj: ls -d **/*

Argument -d do ls mówi mu, aby nie rekursował katalogów przekazywanych jako argumenty (ponieważ używasz globbingu powłoki do rekurencji). Uniemożliwia to ls używanie formatowania rekurencyjnego.

 6
Author: Parakleta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-07 22:06:59
find -type f -print0 | xargs -0 ls -t

Wada: działa tylko do określonej ilości plików. Jeśli masz bardzo dużą ilość plików, potrzebujesz czegoś bardziej skomplikowanego

 3
Author: yankee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-05 21:30:48

Spróbuj find . -type d lub find . -type d -ls

 2
Author: Bobby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-01 23:39:25

Spróbuj tego:

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total' |sed '/^$/d'
 2
Author: wfg5475,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-26 18:37:35

Polecenie w odpowiedzi wfg5475 działa poprawnie, wystarczy dodać jedną rzecz, aby pokazać tylko pliki w katalogu & podkatalogu:

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

Dodano jedną rzecz: ^d Aby zignorować wszystkie katalogi z listy wyjść

 1
Author: Pankaj Tiwari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:29