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


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

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

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

Оффлайн Dexel

  • Автор темы
  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • InteS
Работа делает свободным!

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14672
  • Я не слышу.
    • Просмотр профиля
~.o

Оффлайн Dexel

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

Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 1971
  • X-9000SC
    • Просмотр профиля
звёздочка не нужна
а {} - лучше закавычить "{}"
M5A78L-M LX3 : AMD FX-4330 : 16 Gb RAM : AMD Radeon R7 260x
Samsung N150 : Intel Atom N450 : 2 Gb RAM : Intel GMA 3150

Оффлайн Dexel

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

Оффлайн Peter_I

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

Оффлайн Dexel

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


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

Оффлайн Peter_I

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

Оффлайн Azure

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

 

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