делаешь bash файл, алгоритм такой... переходишь в каталог, выполняешь ls -l весь массив проверяешь на последню дату(проверка проста функции типа Copy, работа со строками) и остовляешь остальное откидываешь в отдельный массив и удаляешь. Еще нужна проверка на каталоги. Если делать на исключительные файл(выборка по имени) то достаточно создать массив с списком имен и выполнять проверку после ls -l перед проверкой на дату.
Предлагаю вот такую команду:rm `ls -t --full-time | awk '{if (NR > 2)printf("%s ",$9);}'`Немного поясню. Вы находитесь в каталоге с логами, причем (как я понял) в этом каталоге только логи и есть.
Вы удаляете (rm) те файлы, которые вернет команда `ls -t --full-time | awk '{if (NR > 2)printf("%s ",$9);}'`. Эта команда делает ls данного каталога сортируя вывод по дате последнего изменения (опция -t) причем дата последнего изменения берется полной из-за опции --full-time (выглядит как-то так: 2009-07-07 14:48:13.214796930 +0400). При такой сортировке у Вас файл, измененный последним, будет вверху. Команда ls -t --full-time выведет Вам не только упорядоченный список файлов, но и строку total (что именно она считает, я не знаю - не смотрел))). Суть в том, что в таком выводе файл, который нам надо оставить, будет вторым по порядку, а все, что ниже, можно спокойно удалить. Поэтому вывод команды ls мы перенаправим на вход потокового редактора, где выкинем из вывода первые две строки (total и файл, который удалять не надо), а из остальных строк распечатаем только название файла. Соответственно, все, что мы выведем, удалится командой rm.
делаешь bash файл, алгоритм такой... переходишь в каталог, выполняешь ls -l весь массив проверяешь на последню дату(проверка проста функции типа Copy, работа со строками) и остовляешь остальное откидываешь в отдельный массив и удаляешь. Еще нужна проверка на каталоги. Если делать на исключительные файл(выборка по имени) то достаточно создать массив с списком имен и выполнять проверку после ls -l перед проверкой на дату.
Предлагаю вот такую команду:
rm `ls -t --full-time | awk '{if (NR > 2)printf("%s ",$9);}'`
Немного поясню. Вы находитесь в каталоге с логами, причем (как я понял) в этом каталоге только логи и есть.Вы удаляете (rm) те файлы, которые вернет команда `ls -t --full-time | awk '{if (NR > 2)printf("%s ",$9);}'`. Эта команда делает ls данного каталога сортируя вывод по дате последнего изменения (опция -t) причем дата последнего изменения берется полной из-за опции --full-time (выглядит как-то так: 2009-07-07 14:48:13.214796930 +0400). При такой сортировке у Вас файл, измененный последним, будет вверху. Команда ls -t --full-time выведет Вам не только упорядоченный список файлов, но и строку total (что именно она считает, я не знаю - не смотрел))). Суть в том, что в таком выводе файл, который нам надо оставить, будет вторым по порядку, а все, что ниже, можно спокойно удалить. Поэтому вывод команды ls мы перенаправим на вход потокового редактора, где выкинем из вывода первые две строки (total и файл, который удалять не надо), а из остальных строк распечатаем только название файла. Соответственно, все, что мы выведем, удалится командой rm.
Сенк выручили :)