Script para remover tudo, MAS manter um arquivo de backup mais recente de todos os subdiretórios

Script para remover tudo, MAS manter um arquivo de backup mais recente de todos os subdiretórios

O script a seguir funciona para uma única pasta, mas quero iterar por todos os subdiretórios.

ls /home/user/Desktop/cron_database_hourly/*/*_[012][0-9]*.zip | head -n -1 | \
   while read -r f; do rm "$f"; done

Responder1

Você provavelmente poderia se safar com algo como (não testado) -

for each in `find -type d /home/usr/Desktop/cron_database/hourly`
do
   ls -t $each/_[012][0-9]*.zip | head -n -1 | \ while read -r f; 
       do 
           rm "$f" 
      done
done

o loop "for each" encontrará uma lista de todos os diretórios, e adicionar um "-t" a ls fará com que ele seja classificado em ordem de data - com o mais recente primeiro.

informação relacionada