Trabajo en un clúster compartido con otros colegas. El disco duro es limitado (y ha estado lleno en algunas ocasiones), así que ocasionalmente limpio mi parte. Quiero hacer esto rápidamente, así que hasta ahora lo hago haciendo una lista de archivos de más de 100 MB de más de 3 meses, y veo si todavía los necesito.
Pero ahora estoy pensando que podría haber una carpeta con> 1000 archivos más pequeños que echo de menos, así que quiero obtener una manera fácil de ver si este es el caso. Por la forma en que genero datos, sería útil obtener una lista del tamaño total por extensión. En el contexto de esta pregunta, 'extensión' como todo lo que está detrás del último punto en el nombre del archivo.
Supongamos que tengo varias carpetas con múltiples archivos:
folder1/file1.bmp 40 kiB
folder1/file2.jpg 20 kiB
folder2/file3.bmp 30 kiB
folder2/file4.jpg 8 kiB
¿Es posible hacer una lista del tamaño total de archivos por extensión de archivo, así:
bmp 70 kiB
jpg 28 kiB
No me importan los archivos sin extensión, por lo que pueden ignorarse o colocarse en una categoría.
Ya revisé las páginas de manual de ls
, du
y find
, pero no sé cuál es la herramienta adecuada para este trabajo ...
fuente
Respuestas:
En un sistema GNU:
O lo mismo con
perl
, evitando la-printf
extensión de GNUfind
(todavía usando una extensión de GNU-print0
, pero esta es más ampliamente compatible hoy en día):Da una salida como:
Si quieres
KiB
,MiB
... sufijos, pipa anumfmt --to=iec-i --suffix=B
.%b*512
proporciona el uso del disco, pero tenga en cuenta que si los archivos están vinculados varias veces, se contarán varias veces para que pueda ver una discrepancia con losdu
informes.fuente
-printf
es específico de GNUfind
, por eso lo dije en un sistema GNU .perl
alternativa que debería funcionar incluso en macOS.Aquí hay otra solución:
La parte que obtiene las extensiones es:
Luego busque los archivos con una extensión e imprímalos también en la pantalla:
A continuación queremos mantener la extensión y el total:
y mantenlo en la misma línea:
fuente
No es tan bueno como la solución de Stephane, pero podrías intentar
donde debe ejecutar esto para cada tipo de archivos.
fuente
du
se ejecuta una invocación. Con GNUxargs
, desearía agregar el-r
indicador para que no se ejecute cuando no hay archivo (de lo contrario, terminaría con el uso del disco del directorio actual). Es posible que desee agregar un-type f
o! type d
para evitar contar los archivos que están en directorios cuyo nombre termina en.png
.