удалить старые файлы резервных копий - PullRequest
5 голосов
/ 15 сентября 2009
# find /home/shantanu -name 'my_stops*' | xargs ls -lt | head -2

Команда, упомянутая выше, выведет список последних двух файлов с именем my_stops. Я хочу сохранить эти 2 файла. Но я хочу удалить все остальные файлы, начиная с «my_stops», из текущего каталога.

Ответы [ 5 ]

14 голосов
/ 15 сентября 2009

Если вы создаете резервные копии на регулярной основе, может быть полезно использовать опцию -atime для поиска, чтобы для удаления можно было выбрать только файлы, которые старше двух ваших последних резервных копий.

Для ежедневного резервного копирования вы можете использовать

$ find /home/shantanu -atime +2 -name 'my_stops*' -exec rm {} \;

но другое выражение (кроме -atime) может подойти вам лучше.

В примере я использовал +2 для обозначения более 2 дней.

4 голосов
/ 15 сентября 2009

Вот нерекурсивное решение:

ls -t my_stops* | awk 'NR>2 {system("rm \"" $0 "\"")}'

Пояснение:

  • Команда ls выводит список файлов с последними 2 сверху
  • Команда awk утверждает, что для этих строк (NR = количество записей, т.е. строк) больше 2, удалите их
  • Символы кавычек необходимы только в том случае, если в именах файлов есть пробелы
1 голос
/ 27 августа 2013

без рекурсивного подхода:

find /home/folder/ -maxdepth 1 -name "*.jpg" -mtime +2
1 голос
/ 15 сентября 2009

Это покажет вам со второй строки вперед;)

find / home / shantanu -name 'my_stops *' | xargs ls -lt | хвост -n + 2

Просто имейте в виду, что поиск рекурсивен;)

1 голос
/ 15 сентября 2009

См. здесь

(ls -t|head -n 2;ls)|sort|uniq -u|xargs rm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...