Par exemple, j'ai un grand système de fichiers qui se remplit plus rapidement que prévu. Je cherche donc ce qui est ajouté:
find /rapidly_shrinking_drive/ -type f -mtime -1 -ls | less
Et je trouve, eh bien, beaucoup de choses. Des milliers de fichiers de six à sept types. Je peux distinguer un type et les compter:
find /rapidly_shrinking_drive/ -name "*offender1*" -mtime -1 -ls | wc -l
mais ce que j'aimerais vraiment, c'est pouvoir obtenir la taille totale sur disque de ces fichiers:
find /rapidly_shrinking_drive/ -name "*offender1*" -mtime -1 | howmuchspace
Je suis ouvert à un one-liner Perl pour cela, si quelqu'un en a un, mais je ne vais pas utiliser de solution impliquant un script multi-lignes ou File :: Find.
La commande du
vous renseigne sur l'utilisation du disque. Exemple d'utilisation pour votre cas spécifique:
find rapidly_shrinking_drive/ -name "offender1" -mtime -1 -print0 | du --files0-from=- -hc | tail -n1
(Auparavant, j'écrivais du -hs
, mais sur ma machine qui semble ignorer l'entrée de find
et résume à la place la taille du cwd.)
Bon sang, Stephan202 a raison. Je n'ai pas pensé à du -s (résumé), alors j'ai plutôt utilisé awk:
find rapidly_shrinking_drive/ -name "offender1" -mtime -1 | du | awk '{total+=$1} END{print total}'
Mais j'aime mieux l'autre réponse, et c'est presque certainement plus efficace.
avec GNU find,
find /path -name "offender" -printf "%s\n" | awk '{t+=$1}END{print t}'
Je voudrais promouvoir le commentaire de Jason ci-dessus au statut de réponse, car je pense que c'est le plus mnémonique (mais pas le plus générique, si vous devez vraiment avoir la liste de fichiers spécifiée par find
):
$ du -hs *.nc
6.1M foo.nc
280K foo_region_N2O.nc
8.0K foo_region_PS.nc
844K foo_region_xyz.nc
844K foo_region_z.nc
37M ETOPO1_Ice_g_gmt4.grd_region_zS.nc
$ du -ch *.nc | tail -n 1
45M total
$ du -cb *.nc | tail -n 1
47033368 total
J'ai essayé toutes ces commandes mais pas de chance. J'ai donc trouvé celui-ci qui me donne une réponse:
find . -type f -mtime -30 -exec ls -l {} \; | awk '{ s+=$5 } END { print s }'