Как очистить каталог?

Mar 26, 2009 17:12

Мне надо скриптом очистить каталог. Но не удалять его. Сейчас стоят две команды rm -f -r -v $DIRNAME и mkdir $DIRNAME. А как это сделать так, что бы не удалять каталог вовсе?

Leave a comment

Comments 42

sanmai March 26 2009, 15:15:49 UTC
man find
man xargs

Reply

deka March 26 2009, 15:22:11 UTC
xargs в данном случае вполне заменяется на -exec rm -f {} \;

Reply

sanmai March 26 2009, 15:22:43 UTC
Конечно, только он чуть-чуть проще для понимания.

Reply

deka March 26 2009, 15:35:24 UTC
Зависит от последовательности изучения ;) Я вот к xargs не могу привыкнуть, мне проще -exec. А у фрихи и, кстати, у центоса 5.2 тоже, есть action -delete.

Reply


alexrat March 26 2009, 15:16:47 UTC
Может rm -f -r -v $DIRNAME/*

Reply

xorro March 26 2009, 20:37:49 UTC
В bash по умолчанию в * не включаются файлы, начинающиеся с точки, соответственно та команда их не удалит. Но можно конечно сделать "shopt -s dotglob".

Reply


jtrubin March 26 2009, 15:18:27 UTC
rm -f -r -v $DIRNAME/* $DIRNAME/.[A-Z,a-z,0-9]*

Reply

slonopotamus March 27 2009, 06:45:11 UTC
Ненадёжно, не удалит файл .ыыы, например.

Reply


dil March 26 2009, 15:18:39 UTC
rm -rvf $DIRNAME/* ?

Reply

deka March 26 2009, 15:21:14 UTC
А если файлов слишком много? ;)

find $DIRNAME -type f -exec rm -f {} \;

Reply

jtrubin March 26 2009, 15:30:03 UTC
Ваш вариант оставит подкаталоги

find $DIRNAME -mindepth 1 -maxdepth 1 -exec rm -rf {} \;

Reply

spb_nick March 26 2009, 16:04:13 UTC
Правильное решение для борьбы с превышением лимита на длину командной строки. Для производительности, конечно, xargs лучше.

Reply


piratusxp March 26 2009, 17:37:33 UTC
Вот вы могз парите
если #rm -rf /* удалит всю вашу операционку
если же натравить его на нужный каталог то и там все удалит
Если вам так важна скорость удаления O_0
так юзайте нежурналируемую файлуху и SAS, и будет вам счастье!

Reply


Leave a comment

Up