Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30

Как удалить архивные файлы

09.11.2017, 19:55. Показов 1741. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, подскажите как реализовать.
Есть архивные файлы в директории формируются они частями, за день может быть примерно 10-12 архивов, как
реализовать удаление старых архивов, оставить только актуальные за последние 4 дня?

######################################## ###################
bm_20171102_121904.log.gz bm_20171108_000005.log.gz bm_20171109_000026.log.gz
bm_20171102_170210.log.gz bm_20171108_000016.log.gz bm_20171109_000044.log.gz
bm_20171102_195159.log.gz bm_20171108_000027.log.gz bm_20171109_000059.log.gz
bm_20171103_000006.log.gz bm_20171108_000041.log.gz bm_20171109_000117.log.gz
bm_20171103_000029.log.gz bm_20171108_000053.log.gz bm_20171109_000124.log.gz
bm_20171103_000046.log.gz bm_20171108_000103.log.gz bm_20171109_000128.log.gz
bm_20171103_000113.log.gz bm_20171108_000107.log.gz bm_20171109_000134.log.gz
bm_20171103_000132.log.gz bm_20171108_000113.log.gz bm_20171109_000143.log.gz
bm_20171103_000140.log.gz bm_20171108_000119.log.gz bm_20171109_000151.log.gz
bm_20171103_000149.log.gz bm_20171108_000125.log.gz bm_20171109_000208.log.gz
bm_20171103_000158.log.gz bm_20171108_000131.log.gz bm_20171109_000215.log.gz
bm_20171103_000207.log.gz bm_20171108_000137.log.gz bm_20171109_000222.log.gz
bm_20171103_000215.log.gz bm_20171108_000140.log.gz bm_20171109_000227.log.gz
bm_20171103_000225.log.gz bm_20171108_000143.log.gz bm_20171109_000232.log.gz
bm_20171103_000234.log.gz bm_20171108_000147.log.gz bm_20171109_000236.log.gz
bm_20171103_000241.log.gz bm_20171108_000152.log.gz bm_20171109_000243.log.gz
bm_20171103_000248.log.gz bm_20171108_000157.log.gz bm_20171109_000251.log.gz
bm_20171103_000255.log.gz bm_20171108_000203.log.gz bm_20171109_000258.log.gz
bm_20171103_000303.log.gz bm_20171108_000209.log.gz bm_20171109_000302.log.gz
bm_20171103_000311.log.gz bm_20171108_000217.log.gz bm_20171109_120139.log.gz
bm_20171103_000318.log.gz bm_20171108_121135.log.gz bm_20171109_131645.log.gz
bm_20171103_104658.log.gz bm_20171108_154634.log.gz bm_20171109_160904.log.gz
bm_20171107_141150.log.gz bm_20171108_174316.log.gz bm_20171109_191920.log
bm_20171107_170004.log.gz bm_20171109_000013.log.gz

######################################## ###################

Добавлено через 26 минут
искать нужно не по датам создания, модификации а по именам файлов.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2017, 19:55
Ответы с готовыми решениями:

Как удалить файлы с недопустимыми символами в именах?
Необходимо составить скрипт, при помощи sed и bash удаляющий в текущем каталоге все файлы, содержащие недопустимые символы и/или пробелы в...

Как удалить файлы с недопустимыми символами в именах?
Составьте скрипт, при помощи sed и bash удаляющий в текущем каталоге все файлы, содержащие недопустимые символы и/или пробелы в имени....

Архивные файлы, да и просто файлы которые весят больше 1гига читаются с ошибкой.
Началось где-то месяца два назад. Архивные файлы, да и просто файлы которые весят больше 1гига читаются с ошибкой. При попытке извлеч из...

7
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
10.11.2017, 00:02
Возникает сразу несколько вопросов: приведенное перечисление файлов является списком, из которого берутся данные? штамп времени извлекается из имени, так? - тогда какова вероятность попадания в этот список файлов за прошлый месяц? С текущим месяцем не так сложно:
Bash
1
2
3
4
5
#!/bin/bash
a=$(seq -s '|' $(date --date="3 days ago" +%d) $(date +%d))
r="bm_$(date +%Y%m)0?[^$a]_\d+\.log\.gz"
# удалить echo для удаления файлов
for i in $(grep -oP $r list.txt); do echo rm -f $i; done
Если существует вероятность обработки файлов за прошлый месяц, придется чуть подправить регулярку, но в целом принцип будет тотже.
1
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30
10.11.2017, 09:53  [ТС]
Да это список файлов, месяц храниться они не будут.
По текущему месяцу не работает, ругается на отсутствие файла list.txt, создал его в текущей директории, но файлы не удалились. смысл такой допустим есть файлы за период с 1 ..... по 10 необходимо оставить файлы 10, 9, 8, 7, за последние 4 дня остальные удалять, по сути остаются только актуальные 4 дня.
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
10.11.2017, 10:21
Цитата Сообщение от tera2017
ругается на отсутствие файла list.txt
Читать умеем? Выше задан вопрос приведенное перечисление файлов является списком, из которого берутся данные?, - чтобы было понятней:
Code
1
2
3
4
5
6
7
8
###########################################################
bm_20171102_121904.log.gz bm_20171108_000005.log.gz bm_20171109_000026.log.gz
bm_20171102_170210.log.gz bm_20171108_000016.log.gz bm_20171109_000044.log.gz
bm_20171102_195159.log.gz bm_20171108_000027.log.gz bm_20171109_000059.log.gz
bm_20171103_000006.log.gz bm_20171108_000041.log.gz bm_20171109_000117.log.gz
bm_20171103_000029.log.gz bm_20171108_000053.log.gz bm_20171109_000124.log.gz
bm_20171103_000046.log.gz bm_20171108_000103.log.gz bm_20171109_000128.log.gz
bm_20171103_000113.log.gz bm ...
Это что: список файлов в текстовом файле или переформатированный вывод ls? Откуда эти данные берутся? Код же выше работоспособен в случае если приведенный фрагмент - список в текстовом файле list.txt и файлы действительно именуются указанным образом.
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30
10.11.2017, 11:17  [ТС]
вывод ls

Добавлено через 15 минут
а как это сделать без записи в текстовый файл, напрямую?
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
10.11.2017, 12:38
Не в курсе в каком каталоге у Вас будет происходить удаление, поэтому код:
Bash
1
2
3
4
5
6
7
8
#!/bin/bash
if [ $# -ne 1 ] || [ ! -d $1 ]; then
  echo 'Папка не найдена или слишком много аргументов.'
fi
 
a=$(seq -s '|' $(date --date="3 days ago" +%d) $(date +%d))
r="bm_$(date +%Y%m)0?[^$a]_\d+\.log\.gz"
for i in $(ls $1 | grep -oP $r); do rm -f $1$i;done
написан из предположения, что:
Code
1
:~$ sh clean.sh backups/
Дальше, полагаю, сможете разобраться самостоятельно что к чему.
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30
10.11.2017, 13:10  [ТС]
1. А как мне свою папку подставить, путь?

Добавлено через 26 секунд
if [ $# -ne 1 ] || [ ! -d $1 ]; then
echo 'Папка не найдена или слишком много аргументов.'
fi

что делает этот код?

Добавлено через 11 минут
по первому скрипту делаю так:
не срабатывает
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@test-smbp60-3 smbp_backup]# sh test.sh
rm -f bm_20171102_121904.log.gz
rm -f bm_20171102_170210.log.gz
rm -f bm_20171102_195159.log.gz
rm -f bm_20171103_000006.log.gz
rm -f bm_20171103_000029.log.gz
rm -f bm_20171103_000046.log.gz
rm -f bm_20171103_000113.log.gz
rm -f bm_20171103_000132.log.gz
rm -f bm_20171103_000140.log.gz
rm -f bm_20171103_000149.log.gz
rm -f bm_20171103_000158.log.gz
rm -f bm_20171103_000207.log.gz
rm -f bm_20171103_000215.log.gz
rm -f bm_20171103_000225.log.gz
rm -f bm_20171103_000234.log.gz
rm -f bm_20171103_000241.log.gz
rm -f bm_20171103_000248.log.gz
rm -f bm_20171103_000255.log.gz
rm -f bm_20171103_000303.log.gz
rm -f bm_20171103_000311.log.gz
rm -f bm_20171103_000318.log.gz
rm -f bm_20171103_104658.log.gz
[root@test-smbp60-3 smbp_backup]# ls
bm_20171102_121904.log.gz  bm_20171103_000234.log.gz  bm_20171108_000053.log.gz  bm_20171108_000209.log.gz  bm_20171109_000151.log.gz  bm_20171109_191920.log.gz  bm_20171110_000347.log.gz
bm_20171102_170210.log.gz  bm_20171103_000241.log.gz  bm_20171108_000103.log.gz  bm_20171108_000217.log.gz  bm_20171109_000208.log.gz  bm_20171110_000016.log.gz  bm_20171110_000354.log.gz
bm_20171102_195159.log.gz  bm_20171103_000248.log.gz  bm_20171108_000107.log.gz  bm_20171108_121135.log.gz  bm_20171109_000215.log.gz  bm_20171110_000034.log.gz  bm_20171110_000402.log.gz
bm_20171103_000006.log.gz  bm_20171103_000255.log.gz  bm_20171108_000113.log.gz  bm_20171108_154634.log.gz  bm_20171109_000222.log.gz  bm_20171110_000053.log.gz  bm_20171110_000408.log.gz
bm_20171103_000029.log.gz  bm_20171103_000303.log.gz  bm_20171108_000119.log.gz  bm_20171108_174316.log.gz  bm_20171109_000227.log.gz  bm_20171110_000121.log.gz  bm_20171110_000413.log.gz
bm_20171103_000046.log.gz  bm_20171103_000311.log.gz  bm_20171108_000125.log.gz  bm_20171109_000013.log.gz  bm_20171109_000232.log.gz  bm_20171110_000148.log.gz  bm_20171110_000417.log.gz
bm_20171103_000113.log.gz  bm_20171103_000318.log.gz  bm_20171108_000131.log.gz  bm_20171109_000026.log.gz  bm_20171109_000236.log.gz  bm_20171110_000158.log.gz  bm_20171110_000423.log.gz
bm_20171103_000132.log.gz  bm_20171103_104658.log.gz  bm_20171108_000137.log.gz  bm_20171109_000044.log.gz  bm_20171109_000243.log.gz  bm_20171110_000208.log.gz  bm_20171110_000426.log.gz
bm_20171103_000140.log.gz  bm_20171107_141150.log.gz  bm_20171108_000140.log.gz  bm_20171109_000059.log.gz  bm_20171109_000251.log.gz  bm_20171110_000218.log.gz  test.sh
bm_20171103_000149.log.gz  bm_20171107_170004.log.gz  bm_20171108_000143.log.gz  bm_20171109_000117.log.gz  bm_20171109_000258.log.gz  bm_20171110_000231.log.gz
bm_20171103_000158.log.gz  bm_20171108_000005.log.gz  bm_20171108_000147.log.gz  bm_20171109_000124.log.gz  bm_20171109_000302.log.gz  bm_20171110_000246.log.gz
bm_20171103_000207.log.gz  bm_20171108_000016.log.gz  bm_20171108_000152.log.gz  bm_20171109_000128.log.gz  bm_20171109_120139.log.gz  bm_20171110_000301.log.gz
bm_20171103_000215.log.gz  bm_20171108_000027.log.gz  bm_20171108_000157.log.gz  bm_20171109_000134.log.gz  bm_20171109_131645.log.gz  bm_20171110_000323.log.gz
bm_20171103_000225.log.gz  bm_20171108_000041.log.gz  bm_20171108_000203.log.gz  bm_20171109_000143.log.gz  bm_20171109_160904.log.gz  bm_20171110_000335.log.gz
[root@test-smbp60-3 smbp_backup]#
PureBasic
1
2
3
4
5
6
7
!/bin/bash
ls > list.txt
a=$(seq -s '|' $(date --date="3 days ago" +%d) $(date +%d))
r="bm_$(date +%Y%m)0?[^$a]_\d+\.log\.gz"
# удалить echo для удаления файлов
for i in $(grep -oP $r list.txt); do echo rm -f $i; done
rm -rf list.txt
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
10.11.2017, 13:33
tera2017, за Вас написали код, Вам привели пример, что еще нужно? Если не понимаете суть написанного, то либо читайте man'ы, либо не беритесь за автоматизацию в принципе. Если дальнейшие объяснения по-прежнему вызовут у Вас трудность, то здесь Вам уже никто не поможет, увы.
Цитата Сообщение от tera2017
что делает этот код?
Проверяет количество передаваемых сценарию параметров, а также существование папки (первый параметр).
Цитата Сообщение от tera2017
не срабатывает
Для тех кто в танке. Теоретическое расположение файлов и папок:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
:~$ cd # перешли в домашнюю папку
 
:~$ ls
backups clean.sh
 
:~$ ls backups
bm_20171102_121904.log.gz bm_20171108_000005.log.gz bm_20171109_000026.log.gz
bm_20171102_170210.log.gz bm_20171108_000016.log.gz bm_20171109_000044.log.gz
bm_20171102_195159.log.gz bm_20171108_000027.log.gz bm_20171109_000059.log.gz
bm_20171103_000006.log.gz bm_20171108_000041.log.gz ...
 
:~$ sh clean.sh backups/
:~$ ls backups
bm_20171107_191054.log.gz ...
Теперь понятно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2017, 13:33
Помогаю со студенческими работами здесь

Распаковать архивные файлы используя arj.exe
Добрый день помогите разобраться. Делаю программу для разархивирования arj архивов. В коде пишет ошибку "Синтаксическая ошибка в...

Как посредством CMD сравнить все файлы в заданной директории и удалить файлы с одинаковым содержимым?
В папке "папка" находятся текстовые файлы 1.txt 2.txt 3.txt 4.txt, некоторые из этих файлов имеют абсолютно одинаковое содержимое. Как...

Как удалить мр3 файлы?
Странно, а ведь некоторые файлы мр3 я в Винде не смог удалить. Я их не блокировал, пароли не вешал, но не мог некоторые файлы удалить....

Как удалить неудаляемые файлы?
Здравствуйте, попробовал использовал Acronis для клонирования жёстких и junction ссылок на другой носитель. В результате получил папки...

Как удалить файлы-двойники?
требуется помощь как удалить файлы двойники при помощи виндовс 7 ,а то размер диска С стал уже 46 гигов


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru