Eu escrevo abaixo o comando para excluir todos os arquivos com mais de 7 dias, mas não funciona:
find /media/bkfolder/ -mtime +7 -name'*.gz' -exec rm {} \;
Como posso remover esses arquivos?
command-line
delete
find
rm
Malihe Pakyari
fonte
fonte
name
e'*.gz'
.Respostas:
Como o @Jos apontou, você perdeu um espaço entre
name
e'*.gz'
; também para acelerar o uso de comando-type f
opção para executar o comando em f iles somente.Portanto, o comando fixo seria:
Explicação:
find
: O comando UNIX para encontrar f iles / d irectories / l tintas e etc./path/to/
: o diretório para iniciar sua pesquisa.-type f
: encontre apenas arquivos.-name '*.gz'
: lista os arquivos que terminam com.gz
.-mtime +7
: considere apenas aqueles com tempo de modificação superior a 7 dias.-execdir ... \;
: para cada resultado encontrado, execute o seguinte comando em...
.rm -- '{}'
: remova o arquivo; a{}
parte é onde o resultado da busca é substituído pela parte anterior.--
significa que os parâmetros de fim de comando evitam o erro dos arquivos iniciados com hífen .Como alternativa, use:
Do homem encontre :
O que é um pouco mais eficiente, porque equivale a:
em oposição a:
como no
-exec
métodoUm comando alternativo e também mais rápido é usar o
+
terminador do exec em vez de\;
:Este comando será executado
rm
apenas uma vez no final, em vez de cada vez que um arquivo for encontrado e esse comando é quase tão rápido quanto usar a-delete
opção como a seguirfind
:fonte
-delete
no final? Por que mexer com o+
ou\;
?Cuidado ao remover arquivos com o find. Execute o comando com -ls para verificar o que você está removendo
find /media/bkfolder/ -mtime +7 -name '*.gz' -ls
. Em seguida, retire o comando do histórico e acrescente-exec rm {} \;
Limite o dano que um comando find pode causar. Se você deseja remover arquivos de apenas um diretório,
-maxdepth 1
impede a localização de percorrer subdiretórios ou de pesquisar no sistema completo se você digitar/media/bkfolder /
.Outros limites que adiciono são argumentos de nome mais específicos
-name 'wncw*.gz'
, como adicionar um horário mais recente-mtime -31
e citar os diretórios pesquisados. Isso é particularmente importante se você estiver automatizando as limpezas.find "/media/bkfolder/" -maxdepth 1 -type f -mtime +7 -mtime -31 -name 'wncw*.gz' -ls -exec rm {} \;
fonte