Скрипт для удаления всего, НО сохранения одного последнего файла резервной копии всех подкаталогов

Скрипт для удаления всего, НО сохранения одного последнего файла резервной копии всех подкаталогов

Следующий скрипт работает для одной папки, но я хочу пройтись по всем подкаталогам.

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

решение1

Вероятно, вам подойдет что-то вроде (не проверено) -

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

Цикл «for each» найдет список всех каталогов, а добавление «-t» к ls заставит его сортироваться по дате — сначала самые последние.

Связанный контент