No OS X Lion em zsh, como posso configurar um diretório / Users / username / tmp que é excluído após X dias?

1

Eu sou novo em scripts e trabalhos regulares no OS X, por isso agradeço a ajuda antecipadamente.

Eu estou olhando para ter um diretório tmp no meu homedir, como em / Users / username / tmp que eu posso usar como meu diretório "downloads".

Meu objetivo é ter arquivos / diretórios neste diretório delete depois de dizer 10 dias após o atime (último acesso).

Então eu estou procurando um script e também o método para executá-lo regularmente no OS X Lion usando ZSH como o shell.

Obrigado.

adarsh
fonte

Respostas:

1

Escreva um script que apague arquivos em uma pasta se o seu atime for anterior a dez dias, e execute-o diariamente (não sei qual é o melhor mecanismo para isso no OSX; no Linux eu usaria anacron ou falharia que executá-lo de hora em hora com cron).

Exemplo de script (pega o diretório, por exemplo ~ / downloads, como primeiro argumento):

#!/bin/zsh

setopt extended_glob

targetpath=$1

[[ -d $targetpath ]] || (echo "Directory does not exist" 1>&2 && exit 1)

rm ${path}/**(.a+10) # ** will match recursively, and the bit in brackets is an
# extended glob qualifier, matching ordinary files with an atime more than ten days ago.
unsetopt extended_glob
exit 0

Há provavelmente todo tipo de coisas erradas com isso, e se você usa habitualmente o extended_glob, você não precisa ativá-lo e, mais tarde, no script, naturalmente.

Darael
fonte
O meu entendimento de setoptfoi que a opção é definida apenas no shell atual (e não é salvo em qualquer lugar), então você não precisa de unsetopt extended_globlá (mas a menos que você tem setoptisso na sua .zshenv, você vai precisar setoptlo no script).
Blacklight brilhando
@BlacklightShining Ah. É bom saber que falhar em desanimá-lo não causará problemas. Obrigado.
Darael
Normalmente, setoptentra ~/.zshrc, que não é lido zshantes de executar scripts. Assim, você deve sempre ter as setoptopções necessárias no início de cada script, como você fez aqui. (Novamente, você não precisa unsetoptdeles, no entanto.)
Blacklight Shining
Sim, entendi que era definitivamente necessário para setopteles.
Darael