Excluir arquivos com base no ano do SSH

1

Eu estou em uma sessão putty e gostaria de excluir arquivos de um diretório que foram criados no ano de 2009.

Por favor, você poderia me dar o comando exato?

    
por Viralk 21.07.2011 / 16:13

3 respostas

2
Primeiro, o fato de você estar usando o ssh realmente não importa. O que importa é o 'shell' que ele apresentou para você e quais ferramentas você tem disponível. Eu vou assumir que você está em 'Bash' e 'encontrar' disponível.

Eu também vou assumir que por 'criado no ano de 2009' você quer dizer 'mais velho que 2010', pois fica mais fácil para mim ... se não, olhe depois do intervalo!

Experimente find :

find /path/to/directory/ -ctime +567 -delete

O texto acima excluirá qualquer coisa com mais de 567 dias (aproximadamente de volta a 2009 a partir da data deste post)

Em vez de -delete , você 'poderia' usar -print primeiro. Quando tiver certeza de que está imprimindo apenas o que deseja excluir, use -delete .

Se você não quiser que as coisas sejam excluídas de 2008, poderá "fazer" o seguinte:

find /path/to/directory/ -ctime +567 -ctime -932 -delete

Esses números provavelmente não estão certos, você pode ajustá-lo.

Seções relevantes do encontro do homem :

   -ctime n
      File's status was last changed n*24 hours ago.  See the comments
      for -atime to understand how rounding affects the interpretation
      of file status change times.


   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.
    
por 21.07.2011 / 16:34
1

Suponho que você esteja usando o PuTTY para conectar-se a algum computador executando alguma distribuição do Linux usando o SSH. Infelizmente, a maioria das distribuições Linux não registra a data de criação de um arquivo. Você só pode descobrir quando um arquivo foi modificado pela última vez e quando foi acessado pela última vez.

Se você quiser encontrar todos os arquivos no diretório atual que foram modificados pela última vez em 2009, use este comando:

find * \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59' -type f

Se você quiser pesquisar subdiretórios também, altere o * para . e remova -type f da seguinte forma:

find . \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59'

Os dois comandos anteriores só imprimirão os nomes dos arquivos. Se tiver certeza de que deseja excluir os arquivos, adicione -delete ao final:

find * \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59' -type f -delete
    
por 22.07.2011 / 18:07
0

Sua melhor aposta é escrever um script de shell no servidor de destino. Plink não fornece processamento para stdin. Veja: link

    
por 22.07.2011 / 17:38

Tags