среда, 14 июля 2010 г.

Bash: оставим только новые файлы (как удалять устаревшие архивы)

В комментариях к одному из предыдущих постов поступило предложение сделать скрипт, который позволил бы время от времени чистить папку с архивами, чтобы в ней оставалось лишь определенное количество файлов (разумеется, самых свежих).
Хинт: Для этих целей можно использовать редактор awk, запустив следующую команду из директории с архивами:
ls -t | awk 'NR>=10 {print;}' /dev/stdin | xargs -i rm {}
ls -t выводит список файлов, сортируя его по времени создания
команда awk NR>=10 {print;} выводит из файла строки, номера которых больше 10. /dev/stdin в качестве имени файла позволяет использовать стандартный поток ввода (что делает ls -t через пайп).
xargs -i rm {} удаляет файлы, имена которых приходят через пайп от awk.
Таким образом, мы оставляем в директории только 10 самых новых файлов.