Не могу удалить все файлы из папки

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
mazay
проходил мимо

Не могу удалить все файлы из папки

Непрочитанное сообщение mazay » 2009-06-22 17:00:53

Код: Выделить всё

echo "/mnt/hda1/333/*" | xargs -p rm -v
в общем передаю путь к папке и пытаюсь удалить ее содержимое, однако получаю сообщение

Код: Выделить всё

rm -v /mnt/hda1/333/*
rm: Невозможно удалить `/mnt/hda1/333/*' No such file or directory
Папка однозначно есть и получившаяся команда rm -v /mnt/hda1/333* выполняется
Чего я не дочитал и не досмотрел? И как сделать правильно?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Не могу удалить все файлы из папки

Непрочитанное сообщение zg » 2009-06-22 17:19:47

mazay писал(а):echo "/mnt/hda1/333/*" | xargs -p rm -v
кавычки нада убрать :smile:

mazay
проходил мимо

Re: Не могу удалить все файлы из папки

Непрочитанное сообщение mazay » 2009-06-23 9:43:17

кавычки нада убрать
точно. СПАСИБО.

Это я вопрос не совсем корректно задал. Пишу скрипт со следующим алгоритмом
1 Строю дерево папок
2 Исключаю из этого дерева нужные папки
3 форматирую вывод
4 из оставшихся папок удаляю файлы
Вот примерный код

Код: Выделить всё

ls -RF 333/ | grep : |  egrep -v -f exclude | sed -e '1d' -e '/\:/\/\*/' | xargs -t rm -v
выдает тоже, что и приведенный выше мной пример.
Как тут кавычки убрать? :smile:

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Не могу удалить все файлы из папки

Непрочитанное сообщение zg » 2009-06-23 10:57:38

mazay писал(а):Как тут кавычки убрать?
а что сделать то нужно? то есть с какой целью идут операции?

mazay
проходил мимо

Re: Не могу удалить все файлы из папки

Непрочитанное сообщение mazay » 2009-06-23 12:58:05

Вообще нужно удалить из дерева папок все папки кроме указанных в файле exclude для очистки места.
На shell пишу первый раз, потому избрал наверно путь через задницу. Наверняка есть альтернатива и гораздо проще, но я ее не нашел

Сформатировал необходимый вывод папок с помощью ls -R, отсортировал его в обратном порядке командой sort, чтобы папки самого нижнего уровня выводились первыми, ну и теперь хочу командами rm -f удалять содержимое этих папок, а затем удалять сами папки командой rmdir, пользуясь тем, что эта команда не удаляет непустые каталоги. Делать сразу rm -rf при таком раскладе нельзя, поскольку удалятся все папки до корня
Как делается проще не знаю и победить xargs тоже не получается.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Не могу удалить все файлы из папки

Непрочитанное сообщение zg » 2009-06-23 17:17:33

mazay писал(а):Делать сразу rm -rf при таком раскладе нельзя, поскольку удалятся все папки до корня
тут всё намного проще:
1. создаёшь список папок на удаление
2. устраняешь из спсика ценные папки
3. через rm -rf удаляешь каждую папку из списка

mazay
проходил мимо

Re: Не могу удалить все файлы из папки

Непрочитанное сообщение mazay » 2009-06-24 13:24:15

Спасибо надо попробовать. В общем решил так, как я и описал. Итогового срипта под рукой нет, но получилось примерно так

Код: Выделить всё

find 333/ | egrep -v -f [тут имя файла исключений] | xargs rm -f
Правда в дистрибутиве, в котором я работал (Linux Puppy 301) оказалось какое-то ограничение при передаче аргументов команде xargs. Весь список не принимался с ошибкой argument is too long или как-то так. А во FreeBSD все работает как и задумано.