The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Оставить в директории только три последние, по списку, файла"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Оставить в директории только три последние, по списку, файла"  +/
Сообщение от universite (ok) on 22-Авг-17, 01:02 
Оставить в директории только три последние, по списку, файла

Вот список файлов:


# ls vzdump-qemu-502-*.log
vzdump-qemu-502-2017_08_11-03_15_02.log vzdump-qemu-502-2017_08_14-03_15_03.log vzdump-qemu-502-2017_08_17-03_15_01.log vzdump-qemu-502-2017_08_20-03_15_03.log
vzdump-qemu-502-2017_08_12-04_20_32.log vzdump-qemu-502-2017_08_15-03_15_02.log vzdump-qemu-502-2017_08_18-03_15_02.log vzdump-qemu-502-2017_08_21-03_15_02.log
vzdump-qemu-502-2017_08_13-03_15_03.log vzdump-qemu-502-2017_08_16-03_15_03.log vzdump-qemu-502-2017_08_19-04_22_59.log

Нужно оставить только эти три файла:


# ls vzdump-qemu-502-*.log | tail -3
vzdump-qemu-502-2017_08_19-04_22_59.log
vzdump-qemu-502-2017_08_20-03_15_03.log
vzdump-qemu-502-2017_08_21-03_15_02.log

Остальные удалить.

Вижу алгоритм:
1) переименовать файлы, оставленные жить.
2) удалить весь список файлов к удалению
3) переименовать обратно файлы

Хочется по-проще...

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Оставить в директории только три последние, по списку, файла"  +/
Сообщение от universite (ok) on 22-Авг-17, 02:14 
> Хочется по-проще...

Сделал так:


vmid=502
ls vzdump-qemu-$vmid-*.log | sed '$d' | sed '$d' | sed '$d' | xargs -n1 rm

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Оставить в директории только три последние, по списку, файла"  +/
Сообщение от Andrey Mitrofanov on 22-Авг-17, 09:06 
>> Хочется по-проще...
> Сделал так:
>
 
> vmid=502
> ls vzdump-qemu-$vmid-*.log | sed '$d' | sed '$d' | sed '$d' |
> xargs -n1 rm
>

-n1 не нужен,
"xargs --no-run-if-empty rm"

+
Конечно, коллеги с -0 тоже подскажут что.

+
$ seq 1 |head -n -3
$ seq 2 |head -n -3
$ seq 3 |head -n -3
$ seq 4 |head -n -3
1
$ seq 7 |head -n -3
1
2
3
4
$ _

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Оставить в директории только три последние, по списку, файла"  +/
Сообщение от ЫЫ on 22-Авг-17, 09:46 
>[оверквотинг удален]
> vzdump-qemu-502-2017_08_19-04_22_59.log
> vzdump-qemu-502-2017_08_20-03_15_03.log
> vzdump-qemu-502-2017_08_21-03_15_02.log
>
> Остальные удалить.
> Вижу алгоритм:
> 1) переименовать файлы, оставленные жить.
> 2) удалить весь список файлов к удалению
> 3) переименовать обратно файлы
> Хочется по-проще...

удалить все файлы старше 3-х дней?

find /путь/vzdump-qemu-502* -type f -mtime +3 -exec rm -rf {} \;

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Оставить в директории только три последние, по списку, файла"  +/
Сообщение от universite (ok) on 22-Авг-17, 15:45 
>>> Хочется по-проще...
>> Сделал так:
>>
 
>> vmid=502
>> ls vzdump-qemu-$vmid-*.log | sed '$d' | sed '$d' | sed '$d' |
>> xargs -n1 rm
>>

> -n1 не нужен,
> "xargs --no-run-if-empty rm"

Нужен.
Иначе мы нарываемся на лимит длины строки-списка в шелле.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Оставить в директории только три последние, по списку, файла"  +/
Сообщение от universite (ok) on 22-Авг-17, 15:46 

> удалить все файлы старше 3-х дней?
> find /путь/vzdump-qemu-502* -type f -mtime +3 -exec rm -rf {} \;

Нет. Виртуалки или бэкапинг могут быть выключены, а три последние копии должны храниться всегда.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Оставить в директории только три последние, по списку, файла"  +/
Сообщение от shadow_alone (ok) on 22-Авг-17, 23:45 
# ls -1 -t *.log|sed -ne '4,129p'|xargs -n1 rm -f

# ls -1 -t *.log|awk 'NR==4,NR==150'|xargs -n1 rm -f

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Оставить в директории только три последние, по списку, файла"  +/
Сообщение от pavlinux (ok) on 23-Авг-17, 18:18 
> Нужно оставить только эти три файла:

Не нужно, проверенно с 1992 года. :)))

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Оставить в директории только три последние, по списку, файла"  +/
Сообщение от Andrey Mitrofanov on 24-Авг-17, 09:23 
>> Нужно оставить только эти три файла:
> Не нужно, проверенно с 1992 года. :)))

Кстати, да!  logrotate же.  Поставить/использовать/задействовать. Инемучить баш.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Оставить в директории только три последние, по списку, файла"  –1 +/
Сообщение от мимопробегал on 29-Сен-17, 01:26 
> Оставить в директории только три последние, по списку, файла
> Остальные удалить.
> Хочется по-проще...

mkdir .0 && mv $(ls | tail -n3) .0 && rm -f ./* && mv .0/* ./ && rmdir .0 && echo "Vse..."

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor