Com o GNU find
e sort
, você obtém os 50 arquivos mais recentes e seu registro de data e hora do diretório atual:
find . -mindepth 1 -maxdepth 1 -printf '%T@ %p\n' | sort -n | tail -n 50
Canalize-os em while read
para obter cada nome de arquivo:
find . -mindepth 1 -maxdepth 1 -printf '%T@ %p\n' |
sort -n | tail -n 50 |
while read -r ts file; do echo rm -rf -- "$file"; done
Aqui, printf
exibe um registro de data e hora classificável, que o% numéricosort
usará. Obtemos os 50 arquivos ou diretórios mais antigos e removemos cada um individualmente. Remova o echo
no script para realmente executar os comandos.
Observe que isso não funciona se seus arquivos / diretórios contiverem uma nova linha em seu nome. Isso não acontece com frequência, mas tenha cuidado para verificar. Devido à natureza de read
, também não funcionará se houver espaços iniciais ou finais.
Para mais algumas ideias, consulte: BashFAQ / 003 - Como posso encontrar o arquivo mais recente (mais antigo, mais antigo) em um diretório?