apaga arquivos com mais de X minutos

2

Eu quero mover arquivos e diretórios com mais de 15 minutos de criação para a pasta de arquivamento no HP Unix, mas não encontrei nenhuma opção para isso. Eu criei um script Perl para ele, mas ele está movendo apenas os arquivos e não os diretórios.

#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use File::Copy;
my $dstdir = '/tmp/test14';
@ARGV = ("/tmp/test11/") unless @ARGV;
print STDERR "Begin @ ", scalar localtime, "\n";
find(
    sub {
        if ( -f $_ && -M _ >= 1/96 ) {
            print STDERR "Moving '$_'\n";
            move( $File::Find::name, $dstdir ) or die "$!\n";
        }
    },
    @ARGV );
print STDERR "Ended @ ", scalar localtime, "\n";
1;

Entrada:

/tmp/test11# ll
drwxrwxrwx   2 root       sys             96 Mar 14 21:46 hello
drwxrwxrwx   2 root       sys             96 Mar 14 21:46 hello1
-rw-rw-rw-   1 root       sys              0 Mar 14 22:03 hello3

Saída:

/tmp/test14# ll
-rw-rw-rw-   1 root       sys              0 Mar 14 22:03 hello3
    
por Anil Kumar 14.03.2018 / 07:24

2 respostas

4

Simplesmente com o comando GNU find (se suportado):

find . -type f -mmin +30 -delete

Como você alterou sua condição, aqui está a versão atualizada:

find . -type f -cmin +15 -delete
    
por 14.03.2018 / 07:31
0

Eu não tenho acesso ao HP-UX, mas no Solaris ou em qualquer sistema BSD (ou seja, não estou usando o GNU find ), o seguinte funcionaria:

find . -type f -cmin +15 -print -exec rm {} +

Isso localizaria todos os arquivos regulares dentro ou abaixo do diretório atual, cuja última mudança de status do inode ocorreu há mais de 15 minutos. Os nomes de caminho desses arquivos serão exibidos e, em seguida, os arquivos serão excluídos.

Para poder dar uma confirmação interativa antes de excluir qualquer coisa, use

find . -type f -cmin +15 -print -ok rm {} ';'

A maioria dos sistemas de arquivos Unix não rastreia o tempo de criação do arquivo . O predicado -cmin de find testará o ctime do arquivo, ou seja, o "tempo de mudança" do inode. Se o inode do arquivo não foi alterado desde que foi criado, então este seria seu "tempo de criação". O timestamp ctime é atualizado na criação de arquivos e em modificações de propriedade ou permissões. A modificação do conteúdo do arquivo também atualiza esse timestamp.

    
por 05.05.2018 / 10:47

Tags