Limpar arquivos

1. Limpar arquivos

Manoel Júnior
manoel.junior

(usa Red Hat)

Enviado em 21/10/2015 - 09:36h

Bom dia Vol's

Gostaria de saber qual o comando ou script que posso fazer para limpar o conteúdo de todos os meus diretórios, não quero apagar os diretórios e sim somente os arquivos, porém os arquivos que estão na raiz do script não quero que seja apagado:

http://s9.postimg.org/55grn0kv3/imagem.png

Poderiam me ajudar?


  


2. Re: Limpar arquivos

Guilherme Isaac
guilhermisaac

(usa Arch Linux)

Enviado em 21/10/2015 - 10:56h

rm /diretorio_desejado/*
caso tenha alguma pasta dentro do diretório ela não será removida, apenas os arquivos
rm /diretorio_desejado/*.doc
caso queira remover apenas arquivos especificos, que tenha algum tipo de extensão
ai vc pode colocar em um script os caminhos dos arquivos que deseja remover e agendar no cron pra ficar automatico

--
Att

Guilherme Isaac


3. Re: Limpar arquivos

thinomar
thinomar

(usa Linux Mint)

Enviado em 21/10/2015 - 14:03h

-O script deve ser colocado onde estão os diretórios que você quer limpar.
-O script limpará tudo que estiver dentro dos diretórios, inclusive os diretórios que estiverem dentro deles.
-Tente entender o script e teste-o antes de usá-lo, para verificar se faz exatamente o que quer, pois não me responsabilizo por arquivos importantes perdidos.
-Para testar e ver se ele está pegando os nomes corretos de diretorios, basta executá-lo com a linha que possui o comando "rm" comentada. Você pode criar um diretorio pra testes também.
#!/bin/sh

# Lista tudo que estiver no diretório em que está o script,
# filtra apenas o que for diretório e armazena os nomes na variavel
dirs=`ls -l | grep ^d | awk '{print $9}'`

# Pega o nome do diretorio em que se encontra o script.
currentdir=`pwd`

# Foreach que rodará enquanto houverem diretorios na variavel
for x in `echo $dirs`
do
#Remove tudo que estiver dentro do diretorio
rm -rf $currentdir/$x/*
# Mensagem de ok
echo "Diretório '$currentdir/$x' limpo!"
done

Lembre de dar permissão de execução para o script:
chmod +x ./script.sh 

--
-I've been talking to the main computer
-And...?
-It hates me


4. Re: Limpar arquivos

Manoel Júnior
manoel.junior

(usa Red Hat)

Enviado em 21/10/2015 - 14:20h

@thinomar,

PERFEITO!!! Muito obrigado pela sua gentileza em criar e disponibilizar o script. Parabéns!




5. Re: Limpar arquivos

Manoel Júnior
manoel.junior

(usa Red Hat)

Enviado em 21/10/2015 - 14:38h

@thinomar,

Caso eu quisesse apagar os arquivos que tem por data os últimos 7 dias, eu poderia fazer dessa forma?

for x in `echo $dirs`
do
#Remove tudo que estiver dentro do diretorio
rm -rf $currentdir/$x/* -type f -mtime +7 -exec rm -f {} \;
# Mensagem de ok
echo "Diretorio '$currentdir/$x' limpo!"
done



6. Re: Limpar arquivos

Daniel Hilst Selli
danielhilst

(usa Arch Linux)

Enviado em 21/10/2015 - 14:58h


# deletar aquivos com mais de sete dias mantendo a estrutura de diretorios.
find . -mindepth 1 -mtime +7 -type f -delete


PS: Eu não testeeei isso :)
PS2: -delete não é POSIX
PS3: pra testar roda sem o "-delete" e ve os arquivos que vem, dps coloca o -delete :)

Att,


7. Re: Limpar arquivos

Manoel Júnior
manoel.junior

(usa Red Hat)

Enviado em 21/10/2015 - 15:05h

danielhilst escreveu:


# deletar aquivos com mais de sete dias mantendo a estrutura de diretorios.
find . -mindepth 1 -mtime +7 -type f -delete


PS: Eu não testeeei isso :)
PS2: -delete não é POSIX
PS3: pra testar roda sem o "-delete" e ve os arquivos que vem, dps coloca o -delete :)

Att,


Obrigado, resolvi utilizando a seguinte sentença:


#Remove tudo que estiver dentro do diretorio
find $currentdir/$x/* -type f -mtime +7 -exec rm -f {} \;

Alterei o timestamp a fim de testes e deu certo! Obrigado mais uma vez!


8. Re: Limpar arquivos

thinomar
thinomar

(usa Linux Mint)

Enviado em 21/10/2015 - 15:21h

Eae manoel.junior,

Então cara, não dá pra fazer isso que você perguntou, mas dá pra fazer tudo em um único comando, sem precisar do script que eu fiz:
find . -mindepth 2 -type f -mtime +7 -exec rm -f {} \; 

O "-mindepth 2" serve para pegar arquivos que estiverem de um nível abaixo em diante.

Lembrando que é bom testar antes pra ver se o comando faz exatamente o que você quer, para evitar perda de arquivos importantes.

Para testar, você pode criar arquivos com timstamp alterado, utilizando o comando touch, com a sintaxe:
touch -t AAAAMMDDhhmm arquivo.txt 

Exemplo com a data 25/05/2002 18:58:
touch -t 200205251858 arquivo.txt 

--
-I've been talking to the main computer
-And...?
-It hates me


9. Re: Limpar arquivos

Manoel Júnior
manoel.junior

(usa Red Hat)

Enviado em 21/10/2015 - 15:38h

Perfeito!!!! Em apenas uma linha resolveu-se tudo!!

Obrigado amigo







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts