
Me gustaría encontrar (luego eliminar) todas las carpetas de música que están casi vacías (Banshee elimina solo los archivos de música pero no los demás archivos allí).
Probé con:
find -type d -size -500k \;
Pero también muestra carpetas que contienen archivos más grandes.
find -type d -size -500k -exec du {} \;
Muestra el tamaño correcto.
¿Cómo modificar el cmd de búsqueda para mostrar solo carpetas que sean más pequeñas que N?
Respuesta1
Un comando que uso, siempre y cuando no necesites canalizar esto directamente a otro script, es
Du. | ordenar -rn
Esto colocaría las carpetas más pequeñas al final de la lista impresa junto con sus tamaños. Se necesitaría un poco más de trabajo para filtrar los que son más grandes.
Respuesta2
Si simplemente desea eliminar carpetas que contienen menos de N bytes, la siguiente línea funcionará:
du | awk '$1 <= 500 { print "rm -rf \"" substr($0, length($1)+2) "\""}' | sh
¿Qué hace esto? Consecutivamente:
du
imprime tamaños de directorios junto con sus rutas$1 <= 500
es una condición que prueba si la primera columna tiene menos de 500 (si tiene menos de 500 bytes)print
en impresiones extrañasrm -rf "/path/to/small/dir"
| sh
lo canaliza a sh para que pueda ejecutarse
También puedes hacerlo usando xargs en lugar de canalizarlo a sh, pero estoy acostumbrado a esta manera.