find com total [RESOLVIDO]

1. find com total [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 02/12/2011 - 10:10h

Bom dia Srs, tudo certo?

Preciso da ajuda de voces..

Preciso de um script, que varra meu diretorio, procurando os arquivos com data superior a 180 dias (06 meses) entao, o que for antigo de 06 meses.

Mas nao é só isso, preciso que ele me dê o total de espaço que isso está consumindo..

Por exemplo, quando uso o "du -hs *.zip --total" ele me traz na ultima linha o tamanho total, precisava disso com o find, ai tentei:

find . -type f -mtime +180 -exec du -csh {} \;
ele nao me traz o totalzao no final

find . -type f -mtime +180 -exec du -hs --total {} \;
tmb nao me traz o totalzao

Talvez eu esteja fazendo da maneira errada..

Como posso chegar no resultado que preciso?

Obrigado e Abs




  


2. Re: find com total [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 02/12/2011 - 11:20h

Tente com o xargs:


find . -type f -mtime +180 | xargs du -csh



3. humm

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 02/12/2011 - 11:30h

hahahaa, boa Renato

mas agora, pq será que com o xargs ele faz... e com o -exec nao.. estranho neh? se o comando/miolo eh o mesmo..

agora me confundi aqui numa coisa.. hahaha

tenho arquivos de Janeiro de 2011 até o dia atual..

quero remover/ver tamanho de Janeiro de 2011 até Junho de 2011

Isso deveria estar certo neh Renato? -mtime +180

Se faço na mao, usando apenas o du -hs arquivos --total (faço um esquema para pegar todos os arquivos deste periodo) ai a soma me da 8Gb e desse modo com o xargs dá 2Gb

O esquema que faço, dá trabalho, por isso queria algo mais facil...


4. Re: find com total [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/12/2011 - 16:22h

dimago escreveu:

hahahaa, boa Renato

mas agora, pq será que com o xargs ele faz... e com o -exec nao.. estranho neh? se o comando/miolo eh o mesmo..


No exec ele está processando basicamente isso:


du -csh arquivo1
du -csh arquivo2
du -csh arquivo3
du -csh arquivo4
.....


e com o xargs ele cria uma lista dos arquivos encontrados no find e depois passa todos de uma só vez para o du:


du -csh arquivo1 arquivo2 arquivo3 arquivo4 arquivo5 ....


Usando o método que mostrei no outro tópico, também é possível criar uma lista assim, e sem o xargs :D


5. Re: find com total [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 02/12/2011 - 16:37h

Pois eh cara, mas ai no xargs, o total está me trazendo 2Gb, sendo que é 8Gb o total..

Tem algo de estranho...



mrk3004 escreveu:

dimago escreveu:

hahahaa, boa Renato

mas agora, pq será que com o xargs ele faz... e com o -exec nao.. estranho neh? se o comando/miolo eh o mesmo..


No exec ele está processando basicamente isso:


du -csh arquivo1
du -csh arquivo2
du -csh arquivo3
du -csh arquivo4
.....


e com o xargs ele cria uma lista dos arquivos encontrados no find e depois passa todos de uma só vez para o du:


du -csh arquivo1 arquivo2 arquivo3 arquivo4 arquivo5 ....


Usando o método que mostrei no outro tópico, também é possível criar uma lista assim, e sem o xargs :D





6. Re: find com total [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 02/12/2011 - 16:39h

Serve assim?
find . -type f -mtime +180 -exec du {} \; | awk '{ print $0; n+=$1} END {print "Total: " n}'


7. Re: find com total [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 02/12/2011 - 16:50h

oi fdmarp

é, assim ele fez... me deu como resultado:
"8046172"

tentei usar o "du -hs" na esperança que ele trouxesse algo como 7.5Gb
mas me trouxe assim: "4.00579e+06" hehehehe

se tiver como trazer de forma mais amigável, fica bacana, mas se nao, assim já me resolve tmb :)

Obrigado fdmarp



fdmarp escreveu:

Serve assim?
find . -type f -mtime +180 -exec du {} \; | awk '{ print $0; n+=$1} END {print "Total: " n}'





8. Re: find com total [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/12/2011 - 17:13h

Deve ser o problema dos espaços que eu falei hehe, tenta assim:


find . -type f -mtime +180 -exec sh -c 'du -csh "$@"' X '{}' +



9. Re: find com total [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 02/12/2011 - 19:31h

oi mrk3004

kra, ainda nao consegui testar pois nao estou mais na empresa..

mas depois conecto via VPN e vou testar :)

obrigado e abraçoo!


mrk3004 escreveu:

Deve ser o problema dos espaços que eu falei hehe, tenta assim:


find . -type f -mtime +180 -exec sh -c 'du -csh "$@"' X '{}' +





10. Feitooo

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 03/12/2011 - 17:34h

fdmarp e mrk3004 - vlw pelas ajudas..

consegui da forma do fdmarp, alterando o du para du -b (trazer em bytes) ai depois converto para Gb. meu script ficou assim


#!/bin/bash
# Script para Calcular o tamanho que pode ser liberado em disco em determinado diretorio.

dir=/var/www/site/arquivos
arq_saida=/home/diego/conta.txt

# Calcula o total em bytes de arquivos com mais de 06 meses que poderao ser removidos:
find $dir -type f -mtime +180 -exec du -b {} \; | awk '{ print $0; n+=$1} END {print n}' > $arq_saida

# Pega a ultima linha do arquivo = valor total
bytes=`tail -1 $arq_saida`

# Faz a conversao para Gb
giga=`echo "scale=2;${bytes}/1024/1024/1024" |bc`

# Imprime em tela o valor em Gb
echo "Total de ${giga} Gb a ser Liberado"


eh isso ai, obrigado pela ajuda :)

Abs,

Diego






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts