Как удалить все файлы, кроме 5 последних, упорядоченных по дате в linux bash - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть папка с большим количеством журналов, расширение «.log».

2020.01.03.log
2020.01.04.log
2020.01.01.log
2020.01.02.log 
do_not_remove_1.txt
2020.01.06.log
2020.01.07.log 
do_not_remove_2.txt
2020.01.05.log

Мне нужно отсортировать их по дате и удалить все файлы журналов, кроме последних 5 файлов журналов. Также эта папка содержит другие файлы, но все файлы журналов имеют расширение «.log», поэтому мне нужно отфильтровать их, затем отсортировать, а затем удалить все, кроме последних 5.

т.е. мне нужно удалить

2020.01.01.log
2020.01.02.log 

из приведенного выше примера.

Как это сделать в linux bash?

1 Ответ

2 голосов
/ 07 апреля 2020

Начните с этого:

ls -tr | head -n -5

Это дает вам список всех файлов, кроме самых новых 5. Теперь передайте это в xargs:

ls -tr | head -n -5 | xargs rm -f

Это не Полное решение пока, это, вероятно, вызовет проблемы с именами файлов, которые содержат необычные символы. Но вы можете начать работать оттуда.

...