Comment lister tous les fichiers dans un répertoire et sous-répertoires dans l'ordre chronologique inverse?

Je veux faire quelque chose comme ls -t mais aussi avoir les fichiers dans les sous-répertoires inclus. Mais le problème est que je ne veux pas que la sortie soit formatée comme le fait ls -R, ce qui est comme ceci:

[test]$ ls -Rt
b       testdir test

./testdir:
a

Je veux qu'il soit formaté comme la commande find affiche les fichiers dans les sous-répertoires. C'est-à-dire

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

Mais ce que find ne semble pas faire, c'est ordonner le résultat chronologiquement par heure de dernière mise à jour.

Alors, comment puis-je lister tous les fichiers dans un répertoire et sous-répertoires, au format que find, mais dans l'ordre chronologique inverse?

46
demandé sur dan 2011-02-06 00:23:36

7 réponses

Essayez celui-ci:

find . -type f -printf "%T@ %p\n" | sort -nr | cut -d\  -f2-
31
répondu marco 2011-02-05 22:00:56

ls -lR est d'afficher tous les fichiers, répertoires et sous-répertoires dans le répertoire personnel ls -lR | more est utilisé pour afficher tous les fichiers dans un flux.

65
répondu rashmi 2012-11-26 11:46:03

Si le nombre de fichiers que vous souhaitez afficher correspond à la limite d'argument maximale, vous pouvez utiliser globbing pour obtenir ce que vous voulez, avec récursivité si vous avez le support globstar.

Pour exactement 2 couches Utilisation profonde: ls -d * */*

Avec globstar, pour l'utilisation de la récursivité: ls -d **/*

L'argument -d de ls lui indique de ne pas récurser les répertoires passés comme arguments (puisque vous utilisez le shell globbing pour faire la récursivité). Cela empêche ls d'utiliser son formatage de récursivité.

6
répondu Parakleta 2016-09-07 22:06:59
find -type f -print0 | xargs -0 ls -t

Inconvénient: ne fonctionne que sur un certain nombre de fichiers. Si vous avez des quantités extrêmement importantes de fichiers, vous avez besoin de quelque chose de plus compliqué

3
répondu yankee 2011-02-05 21:30:48

Essayer find . -type d ou find . -type d -ls

2
répondu Bobby 2013-02-01 23:39:25

Essayez ceci:

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total' |sed '/^$/d'
2
répondu wfg5475 2014-12-26 18:37:35

La commande wfg5475 la réponse de fonctionne correctement, il faut juste ajouter une chose pour afficher uniquement les fichiers dans un répertoire et sous répertoire:

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

Ajouté une chose: ^d pour ignorer tous les répertoires des sorties de liste

1
répondu Pankaj Tiwari 2017-05-23 12:18:29