Mas, na verdade, findtem um atalho para isso: a -deleteopção:
find -type f -name '*.sql' -mtime +15 -delete
Esteja ciente dos seguintes avisos em man find:
Warnings: Don't forget that the find command line is evaluated
as an expression, so putting -delete first will make find try to
delete everything below the starting points you specified. When
testing a find command line that you later intend to use with
-delete, you should explicitly specify -depth in order to avoid
later surprises. Because -delete implies -depth, you cannot
usefully use -prune and -delete together.
PS Observe que canalizar diretamente para rmnão é uma opção, porque rmnão espera nomes de arquivos na entrada padrão. O que você está fazendo atualmente é direcioná-los para trás.
Obrigado. Eu li a página de manual e tentei essa bandeira. Estou passando por um caminho completo, mas voltando "/ usr / www2 / bar / htdocs / foo / rsync / httpdocs / db_backups /: caminho relativo potencialmente não seguro". Alguma idéia do porquê?
obrigado. Não tenho certeza se segui bem o post, mas quando emulei a solução e coloquei -delete no final do comando, ele excluiu todos os arquivos sql, independentemente do tempo de modificação ... mas não havia o aviso, então eu acho desse progresso ...
jerrygarciuh
1
@jerrygarciuh Ouch, espero que nada valioso tenha sido perdido ... mandiz: When testing a find command line that you later intend to use with -delete, you should explicitly specify -depth in order to avoid later surprises.Não sei bem o que isso importa, considerando as outras opções que você usou, mas você tentou isso?
Lev Levitsky
Não, eu não fiz, mas nada foi perdido. Esses arquivos são rsync-ed a partir de outro servidor onde também são armazenados.
man
diz:When testing a find command line that you later intend to use with -delete, you should explicitly specify -depth in order to avoid later surprises.
Não sei bem o que isso importa, considerando as outras opções que você usou, mas você tentou isso?Selecionará arquivos em
/usr/www/bar/htdocs
mais de 15 dias e os removerá.fonte
Outro método mais simples é usar o
locate
comando. Em seguida, canalize o resultado paraxargs
.Por exemplo,
fonte
Supondo que você não esteja no diretório que contém os arquivos de backup * .sql:
A opção -v acima é útil, pois fornecerá, verbalmente, quais arquivos serão excluídos à medida que são removidos.
Eu gosto de listar os arquivos que serão excluídos primeiro para ter certeza. Por exemplo:
fonte