LINUX.ORG.RU
ФорумAdmin

консультация по скрипту


0

1

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

cd /var/www/u/data/www/
 
for d in */ ; do
    rm -rf "$d"cache/*
done

в половине поддиректорий нету директории cache, хочу спросить правильно ли написан скрипт, не глюканет ли его и не снесет ли он все файлы?

А запустить на копии или минимальном окружении не ok уже?

anonymous
()
Ответ на: комментарий от Bers666

Можно, зависит от уровня вложенности.

sdio ★★★★★
()

Если rm не ругнётся, то

rm -fr */cache
если ругнётся -
find . -maxdepth 2 -type d -name cache -print0 | xargs -0 -n 100 -P 6 -r rm -fr

berrywizard ★★★★★
()
Последнее исправление: berrywizard (всего исправлений: 1)

Дебаг делается так:

cd /var/www/u/data/www/
 
for d in */ ; do
#    rm -rf "$d"cache/*
    echo rm -rf "$d"cache/*
done

А вообще так:

rm -rf */cache/* */cache/.*
Если файлов очень много или имена могут содержать пробелы - то:
find . -type d -maxdepth 2 -name 'cache' -exec rm -fr '{}/*' \; 

selivan ★★★
()
Последнее исправление: selivan (всего исправлений: 2)
Ответ на: комментарий от sdio

Чёрт, я же так и каталог выше захватываю. Эммм... я очень не прав. Надо больше спать. Fix:

rm -fr */cache/* */cache/.[^.]*

Правда, оно пропустит cache/....file. Да, пожалуй проще find-ом.

selivan ★★★
()
Последнее исправление: selivan (всего исправлений: 3)

что нужно- в директории перебрать поддиректории, в каждой поддиректории удалить содержимое директории cache

Твоя учил русская язык в Точикистон? В русском языке directory перводится как «каталог», а директория обозначает директорат.

Что нужно — в каталоге перебрать подкаталоги, в каждом из которых удалить содержимое cache/.

Не правда ли, так лучше? Само слово каталог упоминается всего дважды, и то второй раз с приставкой под-, изменяющей его значение. Слеш после cache не оставляет двусмысленности насчёт того, каталог это или нет.

Deleted
()
Ответ на: комментарий от beastie

Иди модерируй (emulek постоянно использует слово «mudak», за которое раньше удаляли, а теперь делают вид что все в порядке)

Скрипты это не твоё!

В cache/ могут быть директории (не пустые) и -delete обломится.

sdio ★★★★★
()
Ответ на: комментарий от dyasny

http://ru.wikipedia.org/wiki/Косая_черта
Коса́я черта́ [в информатике — слеш[nb 1][Написание через е (а не э) регламентировано орфографическим словарем, см. [1].]

Со зрением плохо или посмотрел заголовок и побежал срать в комментариях?

Deleted
()
Ответ на: комментарий от sdio

Это ты по незнанию или по злому умыслу советуешь?

Файлы '.' и '..' нельзя удалить из директории, так что rm ничего с ними не сделает.
Вот если бы вместо rm здесь была другая команда типа chown/chmod - то да, распространенная ошибка =)

bigbit ★★★★★
()
Ответ на: комментарий от beastie

Это уже было в теме. И как всегда первые решения (не) всегда самые не оптимальные. Оптимизации и улучшения приходят позже.

sdio ★★★★★
()
Ответ на: комментарий от dyasny

Слеш — это уже не английское слово.
Slash — английское.
Никто и никогда не запрещал — и боже упаси, если будет — использовать английские слова как они есть в текстах, относящихся к информатике, information technology или прочим computer science.

Deleted
()
Ответ на: комментарий от Deleted

Разумеется, я о специфических терминах, не обзаведшихся пока устойчивым аналогом в русском языке.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.