Як видалити файли, змінені між певними датами?


12

Як і в темі: Я хотів би видалити файли в каталозі, які були змінені в певному діапазоні дат. Як я можу це зробити?

Відповіді:


18

Команда GNU find- це шлях. Наприклад, для видалення всіх файлів у поточному каталозі між 1 та 5 серпня можна скористатися наступною командою

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

Краще виконати команду без -deleteдії, по-перше, побачити перелік зацікавлених файлів (хорошим замінником може бути -lsте, що виробляє ls-подібний перелік).

Якщо вилучити -maxdepth 1специфікацію, також буде перенесено всі підкаталоги.

Ви також можете вказати години, наприклад

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

Будьте попереджені не видаляти єдині лапки, які захищають пробіли між датою та часом.

Характер !- це заперечення, його слід читати: новіше, що ця дата, але не новіше, ніж інша дата.


Дякуємо за відповідь Чи можу я також використовувати щось, щоб вибрати діапазон годин? І що таке "!" використовуваний для ?
Патрик

Не !є. У цьому прикладі: Не новіший за 2011-08-06.
con-f-use

@lordmonkey: див. моє редагування у відповіді
enzotib

3
+1. Я не знав -припустити присудок. Можливо, це не потрібно, але я додам -type f.
Michał Šrajer

@ Michał Šrajer: хороші поради -type f, я це забуваю. -deleteЄ розширення GNU, я думаю.
enzotib
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.