Precisa pular perdido + encontrado ao usar o find

2

Eu sou novo no Ubuntu e não tenho muita experiência com Linux / Unix, então, por favor, tenha paciência enquanto eu tento passar por isso.

Eu tenho um sistema de câmera que grava filmagens e captura imagens e as armazena em uma pasta. O problema é que os novos arquivos não sobrescrevem os arquivos mais antigos, então o sistema de arquivos é preenchido e todos os novos arquivos são descartados.

Então eu instalei Tarefas Agendadas na GUI do Ubuntu e criei uma tarefa para ser executada todos os dias. Aqui está a tarefa:

find /media/dvr/* -type f -mtime 0 -exec rm -rf {} \; 

Eu tenho o -mtime definido como 0 para fins de teste, ele será definido como 7 se eu puder fazer isso funcionar.

O problema que tenho é que há uma pasta perdida + encontrada na pasta /dvr . Quando chega a essa pasta diz que eu não tenho permissão para visualizá-lo e nunca termina sua pesquisa. Eu usei o sudo para entrar e alterar as permissões de propriedade e rwx, mas isso ainda não ajuda.

Existe uma maneira de realizar o que eu quero fazer usando o find? Existe uma maneira mais eficiente de limpar a pasta /dvr/ ?

Como eu disse, novo nisso e tentando melhorar. Qualquer ajuda seria muito apreciada!

    
por Nick 19.01.2012 / 15:31

3 respostas

3

Basta fazer:

find /media/drv -name lost+found -prune -o -type f -exec echo '{}' ';'

Em geral, é uma idéia muito ruim redirecionar o stderr para / dev / null. O ponto principal do stderr é mostrar erros inesperados. Se você está esperando um certo erro, construa seu comando para evitá-lo.

    
por Jay 14.04.2014 / 04:31
1

O comando find não sai em problemas de permissão, tanto quanto eu sei, pode apenas não estar encontrando nenhum arquivo por um motivo diferente. O que posso sugerir é eliminar o stderr para que você não obtenha mensagens enganosas na saída e testar o comando usando echo substituindo rm -rf , ou seja,

find /media/drv/ -type f -mtime 7 -exec echo {} \; 2> /dev/null

Isso deve listar os arquivos que seriam removidos em sua versão final com rm -rf . Se você realmente quiser pular o diretório lost+found (que não deve ser necessário), use:

find /media/drv/ -type f -mtime 7 -not -wholename "*lost+found*" -exec echo {} \; 2> /dev/null
    
por pablomme 19.01.2012 / 16:55
-1

Definir as permissões corretamente deve fazê-lo. O que ls -ld /media/dvr/lost+found diz? Também solte o * no final de / media / dvr /. Você quer encontrar para iniciar sua busca em / media / dvr /, e quando você adiciona o *, o shell substitui essa string com o nome de cada arquivo que encontra em / media / dvr /.

Você também pode simplesmente excluir o diretório perdido + encontrado.

    
por psusi 19.01.2012 / 16:37