Como não excluo arquivos apenas no diretório em que estou?

Como não excluo arquivos apenas no diretório em que estou?

Quero excluir arquivos com mais de 30 dias em um diretório, mas não em diretórios abaixo daquele em que estou.

Responder1

Para listar os arquivos antes de excluí-los:

find . -maxdepth 1 -mtime +30 -type f -ls

Para excluir os arquivos:

find . -maxdepth 1 -mtime +30 -type f -exec rm {} +

com

  • .especificando o diretório atual
  • -maxdepth 1descer no máximo 1 nível de diretórios
  • -mtime +30apenas arquivos modificados pela última vez > 30 dias
  • -type fapenas arquivos normais

Responder2

O shell zsh temrecursos especiais de expansão curingaisso ajudaria.

  • liste arquivos com mais de 30 dias no diretório atual:ls -d -- *(.m+30)

  • remova arquivos com mais de 30 dias no diretório atual:rm -- *(.m+30)

A sintaxe zsh *(.m+30)é um curinga que significa:

  • *--qualquer nome de arquivo
  • ( ... )- com um qualificador de...
  • .-- um arquivo normal (não um diretório, etc)
  • m+30- o tempo de modificação é superior a 30 dias atrás

informação relacionada