Cómo calcular el tamaño total del file buscado utilizando el command Buscar

Primero tengo que search los files usando el command BUSCAR que mostrará solo los files para diciembre de 2012

En segundo lugar, necesito ver el tamaño total de los files buscados

Usé este command

find /storage/backup/rman/ -mtime +90 -mtime -120 -exec ls -lrth {} \; 

Pero también me dio los files de noviembre que no quiero

 -rw-r--r-- 1 oraprod dba 8.7K Dec 1 22:40 /storage/backup/rman/full_011212.log -rw-r----- 1 oraprod dba 3.3G Dec 11 22:34 /storage/backup/rman/BKPPROD_aknskgvb.F_bkp -rw-r----- 1 oraprod dba 34M Dec 1 22:40 /storage/backup/rman/ctrl_011223 -rw-r----- 1 oraprod dba 1.3M Dec 1 22:33 /storage/backup/rman/BKPPROD_8lnrq765.F_bkp -rw-r--r-- 1 oraprod dba 8.0K Dec 20 22:45 /storage/backup/rman/full_201212.log -rw-r----- 1 oraprod dba 34M Dec 2 22:42 /storage/backup/rman/ctrl_021223 -rw-r----- 1 oraprod dba 2.5G Dec 11 22:38 /storage/backup/rman/BKPPROD_ajnskgvb.F_bkp -rw-r----- 1 oraprod dba 34M Dec 13 22:46 /storage/backup/rman/ctrl_131223 -rw-r--r-- 1 oraprod dba 8.0K Dec 17 22:44 /storage/backup/rman/full_171212.log -rw-r--r-- 1 oraprod dba 8.0K Dec 10 22:38 /storage/backup/rman/full_101212.log -rw-r--r-- 1 oraprod dba 8.0K Dec 13 22:46 /storage/backup/rman/full_131212.log -rw-r--r-- 1 oraprod dba 1.4K Nov 30 22:00 /storage/backup/rman/full_301112.log -rw-r----- 1 oraprod dba 34M Dec 8 22:46 /storage/backup/rman/ctrl_081223 -rw-r--r-- 1 oraprod dba 9.2K Dec 12 22:43 /storage/backup/rman/full_121212.log 

cuando paso el du -ch al final del command, este es el resultado:

 8.0K ./.gnome/gnome-vfs 12K ./.gnome 24K ./lsat-0.9.7.1/changelog 920K ./lsat-0.9.7.1 8.0K ./.gconf/desktop/gnome/accessibility/keyboard 12K ./.gconf/desktop/gnome/accessibility 8.0K ./.gconf/desktop/gnome/peripherals/keyboard/host-mdfr-prod/0 12K ./.gconf/desktop/gnome/peripherals/keyboard/host-mdfr-prod 16K ./.gconf/desktop/gnome/peripherals/keyboard 20K ./.gconf/desktop/gnome/peripherals 36K ./.gconf/desktop/gnome 40K ./.gconf/desktop 8.0K ./.gconf/apps/panel/applets/clock/prefs 12K ./.gconf/apps/panel/applets/clock 8.0K ./.gconf/apps/panel/applets/workspace_switcher/prefs 12K ./.gconf/apps/panel/applets/workspace_switcher 8.0K ./.gconf/apps/panel/applets/window_list/prefs 12K ./.gconf/apps/panel/applets/window_list 40K ./.gconf/apps/panel/applets 44K ./.gconf/apps/panel 8.0K ./.gconf/apps/puplet 56K ./.gconf/apps 100K ./.gconf 8.0K ./.nautilus/metafiles 12K ./.nautilus 4.0K ./.eggcups 196K ./.gstreamer-0.10 4.0K ./.networkinghat/esc 8.0K ./.networkinghat 8.0K ./.gnome2/share/cursor-fonts 8.0K ./.gnome2/share/fonts 20K ./.gnome2/share 4.0K ./.gnome2/keyrings 4.0K ./.gnome2/accels 4.0K ./.gnome2/nautilus-scripts 36K ./.gnome2 12K ./.metacity/sessions 16K ./.metacity 4.0K ./.Trash 4.0K ./.gnome2_private 68K ./.gconfd 4.0K ./.mozilla/extensions 4.0K ./.mozilla/plugins 12K ./.mozilla 4.0K ./Desktop 2.5M . 2.5M total 

Algunas versiones de find (Linux no incorporado, Cygwin, OSX, FreeBSD) le permiten comparar el time de modificación de un file con una date de reference con el operador -newermt .

 find /storage/backup/rman -newermt '2012-12-01' ! -newermt '2013-01-01' 

No puede usar -mtime para indicar si un file se modificó en una date determinada, porque este operador es relativo al momento en que ejecuta el command find . Si su find no tiene el operador -newermt , cree files de reference y use el operador -newer .

 touch -t 201212010000 start touch -t 201301010000 end find /storage/backup/rman -newer start ! -newer end 

Para get el tamaño total de los files, use du -c y conserve solo la última línea ("total"). Tendrá que excluir directorys, porque cuando pasa un directory a du , sum los tamaños de todos los files en ese directory.

 find /storage/backup/rman -type f -newermt '2012-12-01' ! -newermt '2013-01-01' -exec du -c {} + | tail -n 1 

Si tiene una gran cantidad de files, la longitud de la línea de command puede ser demasiado grande, por lo que find se ejecutará varias veces y el command anterior solo mostrará la salida del último lote. En ese caso, deberá sumr los montos de cada ejecución. Aquí hay una manera de hacer esto.

 find /storage/backup/rman -type f -newermt '2012-12-01' ! -newermt '2013-01-01' \ -exec sh -c 'du "$@" | tail -n 1' _ {} + | awk '{total += $1} END {print total}' 

Ejercicio: ¿qué pasa con el siguiente command? (Es decir, ¿en qué situación inusual pero posible se informará una cifra incorrecta?)

 find /storage/backup/rman -type f -newermt '2012-12-01' ! -newermt '2013-01-01' \ -exec du {} + | awk '$2 == "total" {total += $1} END {print total}' 

Primero recupere el tamaño del file en bytes y luego resuélvalos:

sed 's/\s\+/+/g' <<<$(find /storage/backup/rman/ -mtime +90 -mtime -120 -exec stat -c "%s" {} \;) | bc

EDITAR

Para ver los files también,

du -chs $(find /storage/backup/rman/ -mtime +90 -mtime -120)

Desde https://stackoverflow.com/questions/64649/how-do-i-get-the-unix-find-command-to-print-out-the-file-size-with-the-file-name

 find . -name '*.ear' -exec ls -lh {} \; 

solo la h extra de la respuesta de jer.drab.org. ahorra time convirtiendo a MB mentalmente.

Recursos Relacionados