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

За 2007-10-11

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

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

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

Для этого и придуман 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" 2007-10-11 14:48:57 (#696474)

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

Sergey B. Khvatov пишет:
>>
>> Не знаю только, знает ли ваш find '-depth'...
>>
>
> -depth и -exec знают все, а вот -empty появился вместе
> с -delete
странно возможно, но -empty присутствует ...

> Но он тут и не нужен - rmdir непустые каталоги
> всё равно не удаляет. Так что:
>
> find -depth -type d -exec rmdir {} \;
> find -depth -type d -print0 | xargs -0 rmdir
>
как работает конструкция xargs -0 rmdir ?
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
Номер письма: 32738; Возраст листа: 1539; Участников: 1449
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/696472

   2007-10-11 14:27:05 (#696472)

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

Denis Silakov пишет:
>
> find -depth -type d -empty -exec rmdir {} \;
>
> Не знаю только, знает ли ваш find '-depth'...
>
знает!

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

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

-*Название листа "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

   2007-10-11 14:21:17 (#696468)

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

В сообщении от 11 октября 2007 Denis Silakov написал(a):
> avm7wo***@m*****.ru wrote:
> > все хуже :)
> >
> :)
> :
> > другие варианты есть?
>
> Есть:)
>
> find -depth -type d -empty -exec rmdir {} \;
>
> Не знаю только, знает ли ваш find '-depth'...

-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" 2007-10-11 12:20:10 (#696440)

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

avm7wo***@m*****.ru wrote:
> все хуже :)
>
:)
> другие варианты есть?
>
>
Есть:)

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

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

   2007-10-11 11:56:38 (#696430)

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

Denis Silakov пишет:
> avm7wo***@m*****.ru wrote:
>
>> Возможно есть более простой способ ......
>>
>> нужно очищать каталог от пустых подкаталогов (причем и вложенных),
>> разумеется если после удаления подкаталога родительский каталог
>> становиться пустым - он тоже должен быть удален
>>
>> на данный момент использую
>> find -type d -empty -exec rmdir --parents {} ';'
>>
>> работает, но find ругается, видимо при удалении каталогов он их теряет,
>> т.к. еще не покинул их
>>
>> еще вариант
>> find -type d -empty | while read LINE; do rmdir --parent $LINE; done
>>
>> этот вариант не работает если в именах есть пробелы
>> экранирование кавычками \"$LINE\" не помогает
>>
>> подскажите пожалуйста как
>>
>>
> Все проще:
>
> find <start_dir> -type d -empty -delete
>
>
все хуже :)
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

   2007-10-11 11:40:49 (#696423)

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

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

> Возможно есть более простой способ ......
>
> нужно очищать каталог от пустых подкаталогов (причем и вложенных),
> разумеется если после удаления подкаталога родительский каталог
> становиться пустым - он тоже должен быть удален
>
> на данный момент использую
> find -type d -empty -exec rmdir --parents {} ';'
>
> работает, но find ругается, видимо при удалении каталогов он их
> теряет, т.к. еще не покинул их
>
> еще вариант
> find -type d -empty | while read LINE; do rmdir --parent $LINE; done
>
> этот вариант не работает если в именах есть пробелы
> экранирование кавычками \"$LINE\" не помогает
>
> подскажите пожалуйста как
>
Все намного проще
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

   2007-10-11 11:03:38 (#696419)

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

avm7wo***@m*****.ru wrote:
> Возможно есть более простой способ ......
>
> нужно очищать каталог от пустых подкаталогов (причем и вложенных),
> разумеется если после удаления подкаталога родительский каталог
> становиться пустым - он тоже должен быть удален
>
> на данный момент использую
> find -type d -empty -exec rmdir --parents {} ';'
>
> работает, но find ругается, видимо при удалении каталогов он их теряет,
> т.к. еще не покинул их
>
> еще вариант
> find -type d -empty | while read LINE; do rmdir --parent $LINE; done
>
> этот вариант не работает если в именах есть пробелы
> экранирование кавычками \"$LINE\" не помогает
>
> подскажите пожалуйста как
>
Все проще:

find <start_dir> -type d -empty -delete

   2007-10-11 10:41:47 (#696416)

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

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

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

на данный момент использую
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

   2007-10-11 10:25:59 (#696412)