Comment calculer la taille totale du file recherché à l'aide de la command Rechercher

Je dois d'abord chercher les files en utilisant la command FIND qui affichera uniquement les files de décembre 2012

Deuxièmement, j'ai besoin de voir la taille totale des files recherchés

J'ai utilisé cette command

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

Mais il m'a aussi donné les files de novembre dont je ne veux pas

 -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 

quand je passe le du -ch à la fin de la command c'est le résultat:

 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 ./.redhat/esc 8.0K ./.redhat 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 

Certaines versions de find (Linux non embarqué, Cygwin, OSX, FreeBSD) vous permettent de comparer l'heure de modification d'un file avec une date de reference avec l'opérateur -newermt .

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

Vous ne pouvez pas utiliser -mtime pour savoir si un file a été modifié à une date particulière, car cet opérateur est relatif au moment où vous exécutez la command find . Si votre find n'a pas l'opérateur -newermt , créez des files de reference et utilisez l'opérateur -newer .

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

Pour get la taille totale des files, utilisez du -c et gardez seulement la dernière ligne ("total"). Vous devrez exclure les directorys, car quand vous passez un directory au du , il ajoute les tailles de tous les files sous ce directory.

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

Si vous avez un grand nombre de files, la longueur de la command line peut être trop grande, alors la find s'exécutera plusieurs fois et la command ci-dessus ne listra que la sortie du dernier lot. Dans ce cas, vous devrez additionner les montants de chaque cycle. Voici une façon de le faire.

 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}' 

Exercice: qu'est-ce qui ne va pas avec la command suivante? (C'est-à-dire dans quelle situation inhabituelle mais possible rapportera-t-il un mauvais chiffre?)

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

Récupérez d'abord la taille du file en octets, puis résumez-les:

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

MODIFIER

Pour voir les files aussi,

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

De 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 {} \; 

juste le supplément de la réponse de jer.drab.org. permet de gagner du time en convertissant mentalement en MB.

Ressources connexes