Je veux résoudre le problème «lister les 10 premiers fichiers les plus récents du répertoire actuel sur 20 Mo».
Avec ls
je peux faire:
ls -Shal |head
pour obtenir les 10 fichiers les plus volumineux et:
ls -halt |head
pour obtenir les 10 fichiers les plus récents
Avec find, je peux faire:
find . -size +20M
Pour répertorier tous les fichiers de plus de 20 Mo dans le répertoire actuel (et les sous-répertoires, ce que je ne veux pas).
Existe-t-il un moyen de répertorier les dix fichiers les plus récents au-dessus d'une certaine taille, de préférence en utilisant ls
?
file
de »-ls
la commande, les caractères spéciaux seront imprimés en caractères échappés backslash-:find . -maxdepth 1 -size +20M -printf "%T@ " -ls | sort -nr | head -n 20 | sed 's/[^ ]\+ //'
. De plus, le format ressemblerals -l
, EoghanM a également spécifié de-l
toute façon.printf
ne fonctionne que pour des distributions GNU spécifiques.%T+
génère des horodatages lisibles par l'homme comme ceux2018-11-06+13:37:54.4606466460
qui sont également triables parsort
(sans-n
), voir: unix.stackexchange.com/questions/29899/…Les qualificatifs glob de Zsh rendent cela facile. Le
.
qualificatif sélectionne uniquement les fichiers normaux,Lm+20
sélectionne les fichiers d'au moins 20 Mo plus un octet de long; pour inclure des fichiers d'une longueur exacte de 20 Mo, utilisezL+20971519
.om
Trie ensuite en diminuant le temps de modification et[1,10]
limite l'expansion aux 10 premières correspondances. Vous avez toujours besoin de l'-t
optionls
pour répertorier les fichiers par date; ou vous pouvez passer les fichiers à une autre commande (la plus jeune en premier). Pour passer les fichiers à une autre commande avec le fichier le plus ancien en premier, utilisezOm
pour trier en augmentant le temps de modification et[-10,-1]
pour extraire les 10 dernières correspondances.la source
Je pense que cela pourrait être une meilleure façon de résoudre le problème ...
Pour vous débarrasser de toute erreur pendant que find essaie d'accéder à des fichiers que vous n'avez pas l'autorisation de lire, vous pouvez ajouter
la source
Cela n'imprimera que les 10 fichiers spécifiés, quels que soient les caractères de nouvelle ligne intégrés dans les noms de fichiers. Il utilise un système de fichiers
inodes
la source
Merci pour toutes les réponses. Ce que je suis allé chercher est le suivant:
Bien qu'il renonce aux 20 mégaoctets au profit de quoi que ce soit au-dessus d'un mégaoctet (et sous un gigaoctet), il est facile à retenir et préserve l'élément lisible par l'homme des tailles de fichiers.
la source
ls
, il vous montre une représentation des fichiers, rien de plus. Pour les noms de fichiers simples, la sortie est généralement équivalente au nom de fichier, mais vous ne devez pas vous y fier.