Quiero resolver el problema 'enumere los 10 archivos más recientes en el directorio actual de más de 20 MB'.
Con lo ls
que puedo hacer:
ls -Shal |head
para obtener los 10 archivos más grandes y:
ls -halt |head
para obtener los 10 archivos más recientes
Con find puedo hacer:
find . -size +20M
Para enumerar todos los archivos de más de 20 MB en el directorio actual (y subdirectorios, que no quiero).
¿Hay alguna manera de enumerar los diez archivos más recientes de más de un tamaño determinado, preferiblemente usando ls
?
file
's-ls
comando, los caracteres especiales se imprimirán como personajes escapados:find . -maxdepth 1 -size +20M -printf "%T@ " -ls | sort -nr | head -n 20 | sed 's/[^ ]\+ //'
. Además, se verá el formatols -l
, EoghanM también especificó de-l
todos modos.printf
solo funciona para distribuciones específicas de GNU.%T+
genera marcas de tiempo legibles para humanos como las2018-11-06+13:37:54.4606466460
que también se pueden ordenar porsort
(sin-n
), ver: unix.stackexchange.com/questions/29899/…Los calificadores globales de Zsh lo hacen fácil. El
.
calificador selecciona solo archivos normales,Lm+20
selecciona archivos que tienen al menos 20 MB más un byte de largo; para incluir archivos que tengan exactamente 20 MB de largo, useL+20971519
. Luegoom
ordena disminuyendo el tiempo de modificación y[1,10]
restringe la expansión a los primeros 10 partidos. Aún necesita la-t
opciónls
si desea enumerar los archivos por fecha; o puede pasar los archivos a algún otro comando (el más joven primero). Para pasar los archivos a otro comando con el archivo más antiguo primero, useOm
para ordenar aumentando el tiempo de modificación y[-10,-1]
extraer las últimas 10 coincidencias.fuente
Creo que esta podría ser una mejor manera de resolver el problema ...
Para deshacerse de cualquier error mientras find intenta acceder a archivos que no tiene permiso para leer, es posible que desee agregar
fuente
Esto imprimirá solo los 10 archivos especificados, independientemente de cualquier carácter de nueva línea incrustado en los nombres de archivo. Utiliza sistema de archivos
inodes
fuente
Gracias por todas las respuestas. Lo que busqué es lo siguiente:
Aunque renuncia a los 20 megabytes a favor de cualquier cosa por encima de un megabyte (y menos de un gigabyte), es fácil de recordar y conserva el elemento legible para los humanos de los tamaños de archivo.
fuente
ls
, se muestra una representación de archivos, nada más. Para nombres de archivo simples, la salida en su mayoría es equivalente al nombre del archivo, pero no debe confiar en él.