1 / 1 / 1
Регистрация: 08.01.2016
Сообщений: 108

Удалить папку со всем ее содержимым

18.10.2016, 17:20. Показов 2451. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Есть код:
Bash
1
find $BACKUPPATH -type f -mtime +$LIMITATION -print0 | xargs -0 rm -f
Есть папка $BACKUPPATH, в которой подпапки с файлами.
Этот код удаляет только файлы в подпапках, а сами подпапки оставляет.
Как сделать, чтобы он удалял не содержимое, а сами подпапки вместе с содержимым?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2016, 17:20
Ответы с готовыми решениями:

Компонент IdFtp, нужно удалить папку со всем её содержимым
Здравствуйте уважаемые программисты! Как по фтп удалить папку со всем её содержимым?

Скопировать папку по сети со всем содержимым (XCOPY и сетевой диск)
Скопировать папку по сети, со всем содержимым XCOPY, и сетевой диск Начальный код Копирование обычное.cmd // файл в кодировке...

Как удалить теги со всем содержимым из кода?
как удалить теги <iframe> и <object> и все что между ними с кода? Пример: <body> <table width="690" border="0"...

13
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
18.10.2016, 19:41
Проверте сперва без заключающей команды rm
Bash
1
find $BACKUPPATH -type f -mtime +$LIMITATION -printf "%h " | xargs rm -r
Добавлено через 25 минут
Извиняюсь, будут ошибки лезть. Вот так будет правильней
Bash
1
find $BACKUPPATH -type f -mtime +$LIMITATION -printf "%h\n" | sort -u | xargs -d'\n' rm -r
1
1 / 1 / 1
Регистрация: 08.01.2016
Сообщений: 108
19.10.2016, 09:21  [ТС]
nezabudka,
выдает следующее:
Bash
1
2
3
4
5
find: -printf: unknown primary or operator
xargs: illegal option -- d
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements] [-S replsize]]
             [-J replstr] [-L number] [-n number [-x]] [-P maxprocs]
             [-s size] [utility [argument ...]]
0
 Аватар для СашаН
349 / 299 / 166
Регистрация: 15.03.2012
Сообщений: 653
Записей в блоге: 1
19.10.2016, 10:00
Попробуй так:
Bash
1
find $BACKUPPATH -type d -d 1 -exec rm -r {} \;
а вообще зачем здесь find, можно и так:
Bash
1
rm -r $BACKUPPATH
1
1 / 1 / 1
Регистрация: 08.01.2016
Сообщений: 108
19.10.2016, 10:25  [ТС]
СашаН,
Bash
1
find $BACKUPPATH -type d -d 1 -exec rm -r {} \; -mtime +$LIMITATION -printf "%h "
Не помогло, папки по прежнему остаются.
Bash
1
rm -r $BACKUPPATH -mtime +$LIMITATION -printf "%h "
Не работает, мб я что-то не так сделал?

Что интересно, сейчас он выкидывает постоянно ошибку:
Bash
1
find: -printf: unknown primary or operator
P.S. Параметр $LIMITATION обязательно нужен, т.к. должны удаляться старые папки с файлами (старее 7 дней)

Добавлено через 7 минут
$BACKUPPATH - корневая папка, ее не надо удалять. Нужно удалять подпапки с файлами в ней.
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
19.10.2016, 10:58
Bash
1
rm -r $(dirname $(find $BACKUPPATH -type f -mtime +$LIMITATION) | sort -u)
Добавлено через 7 минут
SenatoR_Dmr, Покажите если не трудно выводы следующих команд. Просто интересно на будущее.
Можно было бы предположить выдачу первой вашей ошибки отсутствием определения в переменной $LIMITATION
но отсутствие опции -d в утилите xargs меня озадачивает. Может вы работаете не в баше?
Bash
1
2
uname -a
bash --version
1
1 / 1 / 1
Регистрация: 08.01.2016
Сообщений: 108
19.10.2016, 12:32  [ТС]
nezabudka,
Спасибо, команду протестирую позже.
Команды сделал:
Bash
1
2
3
4
5
6
7
8
9
[store1001@web5003 ~]$ uname -a
FreeBSD web5003.nic.ru 8.3-RELEASE-p4 FreeBSD 8.3-RELEASE-p4 #4: Thu Jan 30 00:00:49 MSK 2014     [email]root@web1190.nic.ru[/email]:/usr/obj/usr/src/sys/HNIC-IBM pl#32  i386
[store1001@web5003 ~]$ bash --version
GNU bash, version 4.3.33(0)-release (i386-portbld-freebsd8.4)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
0
 Аватар для СашаН
349 / 299 / 166
Регистрация: 15.03.2012
Сообщений: 653
Записей в блоге: 1
19.10.2016, 14:05
У меня так работает.
Bash
1
find $BACKUPPATH -d 1 -type d -mtime +$LIMITATION -exec rm -rf {} \;
На линуксе.
1
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
19.10.2016, 15:40
В разрезе
Цитата Сообщение от nezabudka Посмотреть сообщение
Просто интересно на будущее.
смотреть стоит сразу имеющиеся опции
Bash
1
find --help
SenatoR_Dmr, Что касается кода, то если надо удалять папки, то их и надо искать (как у СашаН), почему Вы ищите файлы?
2
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
19.10.2016, 19:28
Marinero В задаче совсем не очевидно одинаковое время создания папок и файлов в них.
Мой вариан более универсальный и за отсутсвием дополнительных сведений более точный.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
20.10.2016, 13:58
Цитата Сообщение от nezabudka Посмотреть сообщение
совсем не очевидно одинаковое время создания папок и файлов в них
m[odification]time - время последнего изменения для любой папки == последнему времени изменения любого из её файлов. И если надо удалять папки — это оно и есть.
2
1 / 1 / 1
Регистрация: 08.01.2016
Сообщений: 108
27.10.2016, 09:43  [ТС]
nezabudka,
Ваш код не сработал, выдал следующее:
Bash
1
2
3
usage: dirname string [...]
usage: rm [-f | -i] [-dIPRrvW] file ...
       unlink file
Добавлено через 5 минут
СашаН, Ваш код отработал, спасибо.
Только, почему-то выдал такое:
Bash
1
find: /backups/2016-10-22: No such file or directory
Хотя как раз эту папку он и удалил (что верно). Непонятно, зачем он после удаления начал снова искать этот каталог.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
27.10.2016, 17:20
Цитата Сообщение от SenatoR_Dmr Посмотреть сообщение
почему-то выдал такое
С Вашим
Цитата Сообщение от SenatoR_Dmr Посмотреть сообщение
FreeBSD 8.3-RELEASE-p4
надо видеть
Цитата Сообщение от Marinero Посмотреть сообщение
имеющиеся опции
Bash
1
find --help
чтобы верно расписать команду(в GNU find есть операция -delete позволяющая избежать подобных проблем, или опция -depth)
1
1 / 1 / 1
Регистрация: 08.01.2016
Сообщений: 108
27.10.2016, 17:47  [ТС]
Marinero,
Bash
1
2
3
4
5
6
7
8
find --help
find: illegal option -- -
find: illegal option -- h
find: illegal option -- e
find: illegal option -- l
find: illegal option -- p
usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
       find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.10.2016, 17:47
Помогаю со студенческими работами здесь

Как из ВБ удалить каталог со всем содержимым в нём?
Как мне из ВБ удалить каталог со всем содержимым в нём. Знаю API функцию которая удаляет каталог, но если в нём есть файлы или подкаталог...

Как удалить скрытую папку вместе с содержимым
Добрый день. Необходимо удалить скрытую папку вместе с содержимым в ней, либо удалить содержимое папки. Путь папки известен: D:/ymir...

Почему не работает поиск? Как удалить папку вместе с содержимым?
1. Поиск на релибе не работает у меня! Отчего это может быть? Давлю ПОИСК - предлагает создать тему или пишет сообщение об ошибке.... ...

Удаление папки со всем содержимым
в папке с exeшником лежит папка work а в ней ещё 5 папок нужно по нажатию на кнопке удалить 5 папок из папки work.

Архивация папки со всем её содержимым
Помогите пожалуйста:( Как можно изменить разделитель папок в создаваемом архиве? Сейчас разделитель папок \ (windows) Как можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
API на базе FastAPI с Python за пару минут
AI_Generated 07.07.2025
FastAPI - это относительно молодой фреймворк для создания веб-API, который за короткое время заработал бешеную популярность в Python-сообществе. И не зря. Я помню, как впервые запустил приложение на. . .
Основы WebGL. Раскрашивание вершин с помощью VBO
8Observer8 05.07.2025
На русском https:/ / vkvideo. ru/ video-231374465_456239020 На английском https:/ / www. youtube. com/ watch?v=oskqtCrWns0 Исходники примера:
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
Создаем микросервисы с Go и Kubernetes
golander 02.07.2025
Когда я только начинал с микросервисами, все спорили о том, какой язык юзать. Сейчас Go (или Golang) фактически захватил эту нишу. И вот почему этот язык настолько заходит для этих задач: . . .
C++23, квантовые вычисления и взаимодействие с Q#
bytestream 02.07.2025
Я всегда с некоторым скептицизмом относился к громким заявлениям о революциях в IT, но квантовые вычисления - это тот случай, когда революция действительно происходит прямо у нас на глазах. Последние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru