Je veux faire quelque chose comme ls -t
mais aussi inclure les fichiers dans les sous-répertoires. Mais le problème est que je ne veux pas que la sortie soit formatée comme ls -R
fait, 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 des 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 la dernière mise à jour.
Alors, comment puis-je lister tous les fichiers d'un répertoire et de sous-répertoires, au format que find
fait, mais dans l'ordre chronologique inverse?
Essaye celui-là:
find . -type f -printf "%T@ %p\n" | sort -nr | cut -d\ -f2-
ls -lR
consiste à afficher tous les fichiers, répertoires et sous-répertoires du répertoire de base ls -lR | more
est utilisé pour afficher tous les fichiers d'un flux.
Si le nombre de fichiers que vous souhaitez afficher correspond à la limite d'arguments maximale, vous pouvez utiliser la méthode de regroupement pour obtenir ce que vous souhaitez, avec récursivité si vous disposez de la prise en charge de globstar.
Pour une utilisation en profondeur de 2 couches: ls -d * */*
Avec globstar, pour une utilisation récursive: ls -d **/*
Le -d
argument à ls
lui dit de ne pas recurse les répertoires passés sous forme d'arguments (puisque vous utilisez l'étalement de shell pour effectuer la récursion). Ceci empêche ls
d’utiliser sa mise en forme récurrente.
Essayez find . -type d
ou find . -type d -ls
find -type f -print0 | xargs -0 ls -t
Inconvénient: ne fonctionne que sur un certain nombre de fichiers. Si vous avez une très grande quantité de fichiers, vous avez besoin de quelque chose de plus compliqué.
essaye ça:
ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total' |sed '/^$/d'
La commande dans la réponse de wfg5475 fonctionne correctement, il suffit d'ajouter une chose pour afficher uniquement les fichiers d'un répertoire et d'un sous-répertoire:
ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total|^d' |sed '/^$/d'
Ajout d'une chose: ^d
pour ignorer tous les répertoires des sorties de liste