Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сравнение имен файлов из bash

41K
31 июля 2008 года
x-speed
1 / / 31.07.2008
Добрый день гуру!

Я начинающий линуксоид, поэтому наверняка задаю простой для всех вопрос.


Возникла необходимость сделать систему резервного копирования для ext3 и далее периодически убивать старые версии файлов tar.
Все предполагается делать скриптом на BASH

принцыпиально имена файлов будут

***-change-080423.tar.gz

08-04-23 Год,месяц,число

Необходима процедура поиска наиболее старого файла и удаление его из директории. Причем процедура удаления основывается не на дате создания файла (ctime,mtime) а на количество резервных копий хранящихся в каталоге. Т.е. если в директории будет >2 резервных копий, все последующие необходимо удалять.


Заранее спасибо!!!!
1.9K
01 августа 2008 года
max_dark
256 / / 11.11.2005
Я не гуру, но вот что у меня получилось:
Код:
#!/bin/sh

wpath='.'
prefix='change'
ext='tar.gz'
skip() {
    echo "Skip: $_"
}
remove() {
    echo "Delete: $_"
    rm $_
}
list=`/bin/ls ${wpath}/*-${prefix}-??????.${ext} 2>/dev/null | sort -r`
total=`echo -n $list | wc -w | sed 's/[^0-9]//g'`
echo "Have ${total} file(s)"
echo "Delete old files ..."
cnt=1
total=''
for x in $list ; do
    case $cnt in
        1)
            cnt=2
            skip $x
        ;;
        2)
            cnt=''
            skip $x
        ;;
        *)
            total="${total}x"
            remove $x
        ;;
    esac
done
total=`echo -n $total | wc -c | sed 's/[^0-9]//g'`
echo "Done. Deleted ${total} file(s)"
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог