Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как рекурсивно удалить директории, созданные за посление N часов?  (Прочитано 862 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Wars ~.o

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Удалить за последние N часов или за сутки.
Вобщем:
Код: (Bash) [Выделить]
find ~/Projects/Linguistics/lessons/pictures/ttt/* -type d -ctime -1 -exec rm -r {} \;, но после каждого удаления почему-то пишет "Нет такого файла или каталога". Кривовато, но работает.
« Последнее редактирование: 02 Июля 2018, 19:05:37 от Dexel »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
звёздочка не нужна
а {} - лучше закавычить "{}"
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
При записи в директорию изменяется время её модификации. И если убрать звёздочку, то удалит вместе с этой директорией. В данном примере это директория ttt.Короче в ней создаются директории с файлами, их нужно удалить, которые были созданы за последние сутки. Помимо них ещё пару сотен директорий. Если убрать звезду, то все они будут удалены рекурсивно с директорией ttt.Прежде чем выполнять rm -r, я протестировал через echo.Вот не понятно от чего идёт ругня на каждую удалённую директорию.Да, закавычу скобки на всякий, хотя все директории без пробелов.

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3026
    • Просмотр профиля
А если "*" убрать и написать
-name "*"
остальное оставить?
Пётр.

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Звезда же включает и точку, т.е. текущую директорию.Всё равно что не указывать вообще -name


Пользователь добавил сообщение 03 Июля 2018, 17:52:40:
Ушел от звезды в пути. Вариант 2, результат тот же:
Код: (Bash) [Выделить]
$ mkdir ~/Projects/Linguistics/lessons/pictures/ttt/dir1
$ mkdir ~/Projects/Linguistics/lessons/pictures/ttt/dir2
$ touch ~/Projects/Linguistics/lessons/pictures/ttt/dir1/file1
$ touch ~/Projects/Linguistics/lessons/pictures/ttt/dir2/file2
$ find ~/Projects/Linguistics/lessons/pictures/ttt/ -type d -cmin -1440 -not -path "*/ttt/" -exec echo {} \;
/home/dexel/Projects/Linguistics/lessons/pictures/ttt/dir2
/home/dexel/Projects/Linguistics/lessons/pictures/ttt/dir1
$ find ~/Projects/Linguistics/lessons/pictures/ttt/ -type d -cmin -1440 -not -path "*/ttt/" -exec rm -r {} \;
find: ‘/home/dexel/Projects/Linguistics/lessons/pictures/ttt/dir2’: No such file or directory
find: ‘/home/dexel/Projects/Linguistics/lessons/pictures/ttt/dir1’: No such file or directory
« Последнее редактирование: 03 Июля 2018, 17:52:40 от Dexel »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3026
    • Просмотр профиля
Dexel, да, когда я это сообразил, поправить уже не мог. Если только отсеять "." из обшего списка,
у меня где-то был фильтр для этого.
Пётр.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
... -exec rm -r {} +Если уж не используете -delete то хотя бы -depth вставьте...
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.058 секунд. Запросов: 25.