Como posso usar um comando para excluir todos os arquivos em Downloads cujas datas adicionadas são maiores que 1 ano?

12

Eu estou usando um Mac. Como posso usar um comando para excluir todos os arquivos ~/Downloadscujas datas adicionadas são maiores que 1 ano?

Larry
fonte
1
Você está procurando especificamente por um comando do terminal ou algo como uma ação de automação é suficiente?
Jerry W.
1
O que você quer dizer com "cujas datas são adicionadas?" Adicionado a quê e como?
Allan
1
@Allan Marque "Exibir> Organizar por" ou as colunas disponíveis em "Opções de exibição" no Finder; O OS X rastreia a data em que um item foi adicionado a uma pasta.
Miles
@Miles - esses atributos não estão disponíveis no bash, a menos que você instale as ferramentas XCode Dev e o OP usado especificamente ~ / Downloads, que é uma convenção do bash (ou mais genericamente, um shell).
Allan

Respostas:

24

É um comando relativamente simples excluir arquivos em um diretório maior que um ano. Por exemplo, o seguinte comando executado no Terminal

find ~/Downloads/ -type f -mtime +365 -exec rm {} \;

excluirá todos os arquivos no ~/Downloadsdiretório com mais de um ano.

  • find é o comando que procura por "coisas"

  • -type fdiz para encontrar o que procurar, neste caso, arquivos

  • -mtime +365 informa que o tempo modificado deve ser maior que 365 dias

  • -exec rm {} passa (executa) cada item "encontrado" para o comando rm

O que eu gosto de fazer é testá-lo excluindo a -exec rm {} \;parte e verifique se estou obtendo os resultados corretos. Quando tiver certeza, basta adicioná-lo para concluir a remoção.

Uma advertência !! Esses arquivos não são adicionados ao seu "Lixo". O comando ignora o Lixo e é excluído imediatamente, portanto, use com cuidado.


Uma maneira mais segura ...

(Obrigado ao usuário lucasoldaini nos comentários abaixo)

Se você deseja mover seus arquivos para o "Lixo", basta substituir a -exec rm {} \;parte para-exec mv {} ~/.Trash \;

Eles permanecerão no seu Lixo até a próxima vez que você o esvaziar.

Você pode obter mais informações sobre cada comando, visualizando suas páginas de manual:

Allan
fonte
6
Em vez de usar rm, você pode mover os arquivos ~/.Trashpara impedir que eles sejam excluídos imediatamente.
Lucasoldaini
2
Observe que a data de modificação (na qual esta resposta está operando) é diferente da data de adição . Além disso, o Safari definirá a data de modificação de um arquivo baixado para o fornecido pelo servidor, se disponível, portanto, mesmo um arquivo baixado ontem pode ter uma data de modificação com mais de um ano.
Miles
2
Se você tiver o homebrew: brew install lixo e, em vez disso, use o comando trash a partir de agora.
precisa saber é o seguinte
Atualizei minha resposta com base na sugestão de @lucasoldaini. Prefiro usar métodos incorporados do que usar homebrew ou MacPorts.
Allan
1
Eu gosto mais da sua solução do que da minha.
Jerry W.
10

Se você deseja usar o Automator, pode criar uma ação como esta:

Encontre itens do Finder - Downloads de pesquisa - Todos os seguintes itens são verdadeiros: -Data de criação não ocorre nos últimos 365 dias.

Obter itens selecionados do Finder

Mover itens do Finder para a lixeira

Captura de tela conveniente: Ações do Automator

Jerry W.
fonte
7

Minha escolha da ferramenta é Hazel , um software de baixo custo para múltiplos propósitos que faz coisas com arquivos e pastas quando elas correspondem a certas regras que você configura. Esta regra moverá os arquivos não adicionados no ano passado da pasta Hämtade filer . É diferente da solução de linha de comando acima, pois é executada todos os dias, por isso é uma solução definida e esquecida. Captura de tela do painel pref Hazel

reiniciar
fonte
Esta é a melhor solução, pois ela realmente usa Data adicionada em vez de Data modificada, que pode não ser a mesma. Uma solução de linha de comando poderia procurar kMDItemDateAdded, mdlsmas eu recomendo a solução Hazel.
TJ Luoma