Отправляет email-рассылки с помощью сервиса Sendsay

Удаление пустых каталогов

Возможно есть более простой способ ......

нужно очищать каталог от пустых подкаталогов (причем и вложенных),
разумеется если после удаления подкаталога родительский каталог
становиться пустым - он тоже должен быть удален

на данный момент использую
find -type d -empty -exec rmdir --parents {} ';'

работает, но find ругается, видимо при удалении каталогов он их теряет,
т.к. еще не покинул их

еще вариант
find -type d -empty | while read LINE; do rmdir --parent $LINE; done

этот вариант не работает если в именах есть пробелы
экранирование кавычками \"$LINE\" не помогает

подскажите пожалуйста как

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32731; Возраст листа: 1539; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/696412

Ответить   Thu, 11 Oct 2007 10:27:15 +0400 (#696412)

 

Ответы:

avm7wo***@m*****.ru wrote:

Все проще:

find <start_dir> -type d -empty -delete

Ответить   Thu, 11 Oct 2007 10:43:09 +0400 (#696416)

 

Denis Silakov пишет:

все хуже :)
find ./ -type d -empty -delete
find: неверный предикат `-delete'

в моей версии find нет такого действия
find --version
GNU find версии 4.1.7

обновлю со временем (сервер - не все так просто)

другие варианты есть?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32734; Возраст листа: 1539; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/696423

Ответить   Thu, 11 Oct 2007 11:26:49 +0400 (#696423)

 

avm7wo***@m*****.ru wrote:

:)

Есть:)

find -depth -type d -empty -exec rmdir {} \;

Не знаю только, знает ли ваш find '-depth'...

Ответить   Thu, 11 Oct 2007 11:54:58 +0400 (#696430)

 

В сообщении от 11 октября 2007 Denis Silakov написал(a):

-depth и -exec знают все, а вот -empty появился вместе
с -delete Но он тут и не нужен - rmdir непустые каталоги
всё равно не удаляет. Так что:

find -depth -type d -exec rmdir {} \;
find -depth -type d -print0 | xargs -0 rmdir
если и print0 нет - то:
find -depth -type d -print | xargs rmdir
но это проходит только если в именах нет пробелов. Если
есть то:
find -depth -type d -print | while read dir
do
rmdir "$dir"
done

Во всех случаях rmdir будет много возмущаться сделает то,
что требуется.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32736; Возраст листа: 1539; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/696440

Ответить   "Sergey B. Khvatov" Thu, 11 Oct 2007 12:19:07 +0400 (#696440)

 

Sergey B. Khvatov пишет:

странно возможно, но -empty присутствует ...

как работает конструкция xargs -0 rmdir ?
rmdir у меня ( :) ) не принимает параметры со стандартного ввода

Спасибо большое.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32738; Возраст листа: 1539; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/696472

Ответить   Thu, 11 Oct 2007 14:28:13 +0400 (#696472)

 

В сообщении от 11 октября 2007 avm7wo***@m*****.ru написал(a):

Для этого и придуман xargs

Он собирает параметры со стандартного ввода и передаёт
указанной программе. Причём следит за их общей длиной (она
ограничена) и "свою" программу может запустить несколько
раз.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32739; Возраст листа: 1539; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/696474

Ответить   "Sergey B. Khvatov" Thu, 11 Oct 2007 14:50:35 +0400 (#696474)

 

Denis Silakov пишет:

знает!

работает на ура

спасибо, чтобы я без Вас делал :)

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32737; Возраст листа: 1539; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/696468

Ответить   Thu, 11 Oct 2007 14:21:50 +0400 (#696468)

 

На Thu, 11 Oct 2007 10:27:15 +0400
"avm7wo***@m*****.ru" <avm7wo***@m*****.ru> записано:

Все намного проще
find $PATH -type d -empty -delete

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 32733; Возраст листа: 1539; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/696419

Ответить   Thu, 11 Oct 2007 14:04:45 +0700 (#696419)