URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 32692
[ Назад ]

Исходное сообщение
"Удалить файлы"

Отправлено schtazen , 24-Июл-03 18:34 
Какой командой удалить 15000 файлов в одной директории?

Содержание

Сообщения в этом обсуждении
"Удалить файлы"
Отправлено DogEater , 24-Июл-03 20:12 
>Какой командой удалить 15000 файлов в одной директории?

сам то понял, что написал?
удалить все файлы -это пожалуйста: rm -f ./*
удалить файлы по маске -это пожалуйста: rm -f ./*mp3
но именно 15000?

если 15000 первых то так:
FILES_TO_KILL=$(find ./ | head -15000);for FILE in $FILES_TO_KILL do rm -f $FILE done

если 15000 последних то меняй head на tail



"Удалить файлы"
Отправлено poor bugger , 25-Июл-03 02:43 
все правильно человек написал
шелл на rm -f ./* будет говорить что слишком длинный список

можно так: rm -rf каталог_с_15000_ми_файлов


"Удалить файлы"
Отправлено newser , 25-Июл-03 09:43 
>все правильно человек написал
>шелл на rm -f ./* будет говорить что слишком длинный список
>
>можно так: rm -rf каталог_с_15000_ми_файлов

Если не ошибаюсь, то можно и так:
find . | xargs rm -f
тогда он разобьет слишком длинный список на части.


"Удалить файлы"
Отправлено Alex_M , 25-Июл-03 12:28 
>>все правильно человек написал
>>шелл на rm -f ./* будет говорить что слишком длинный список
>>
>>можно так: rm -rf каталог_с_15000_ми_файлов
>
>Если не ошибаюсь, то можно и так:
>find . | xargs rm -f
>тогда он разобьет слишком длинный список на части.

или так:
find . -exec rm -f {} ;

:-)


"Удалить файлы"
Отправлено lavr , 25-Июл-03 12:39 
>>>все правильно человек написал
>>>шелл на rm -f ./* будет говорить что слишком длинный список
>>>
>>>можно так: rm -rf каталог_с_15000_ми_файлов
>>
>>Если не ошибаюсь, то можно и так:
>>find . | xargs rm -f
>>тогда он разобьет слишком длинный список на части.
>
>или так:
>find . -exec rm -f {} ;
>
>:-)

а не проще удалить директорию целиком!? если нужно чтобы она существовала,
сперва mv ее с новым_именем, затем mkdir оригинальное_имя, после чего можно rm -rf новое_имя. И никаких образцов, поисков, выборок, парсинга
и переполнения, нет?


"Удалить файлы"
Отправлено newser , 25-Июл-03 13:14 
>а не проще удалить директорию целиком!? если нужно чтобы она существовала,
>сперва mv ее с новым_именем, затем mkdir оригинальное_имя, после чего можно rm
>-rf новое_имя. И никаких образцов, поисков, выборок, парсинга
>и переполнения, нет?

Я полагаю, что это можно сделать только в случае, если необходимо удалить все файлы в каталоге. Но если какие-то файлы необходимо оставить, то этот способ здесь неприменим :)


"Удалить файлы"
Отправлено Alex_M , 25-Июл-03 14:15 
>>>>все правильно человек написал
>>>>шелл на rm -f ./* будет говорить что слишком длинный список
>>>>
>>>>можно так: rm -rf каталог_с_15000_ми_файлов
>>>
>>>Если не ошибаюсь, то можно и так:
>>>find . | xargs rm -f
>>>тогда он разобьет слишком длинный список на части.
>>
>>или так:
>>find . -exec rm -f {} ;
>>
>>:-)
>
>а не проще удалить директорию целиком!? если нужно чтобы она существовала,
>сперва mv ее с новым_именем, затем mkdir оригинальное_имя, после чего можно rm
>-rf новое_имя. И никаких образцов, поисков, выборок, парсинга
>и переполнения, нет?

Не проще, если у директории установлены какие-нибудь специфические права доступа/флаги.


"Удалить файлы"
Отправлено lavr , 25-Июл-03 14:29 
>>>>>все правильно человек написал
>>>>>шелл на rm -f ./* будет говорить что слишком длинный список
>>>>>
>>>>>можно так: rm -rf каталог_с_15000_ми_файлов
>>>>
>>>>Если не ошибаюсь, то можно и так:
>>>>find . | xargs rm -f
>>>>тогда он разобьет слишком длинный список на части.
>>>
>>>или так:
>>>find . -exec rm -f {} ;
>>>
>>>:-)
>>
>>а не проще удалить директорию целиком!? если нужно чтобы она существовала,
>>сперва mv ее с новым_именем, затем mkdir оригинальное_имя, после чего можно rm
>>-rf новое_имя. И никаких образцов, поисков, выборок, парсинга
>>и переполнения, нет?
>
>Не проще, если у директории установлены какие-нибудь специфические права доступа/флаги.

это с каких дров если я администратор или владелец?

не проще - это только в случае удаления ПО КРИТЕРИЮ, те НЕ ВСЕГО содержимого.


"Удалить файлы"
Отправлено Alex_M , 25-Июл-03 14:41 
>>>>>>все правильно человек написал
>>>>>>шелл на rm -f ./* будет говорить что слишком длинный список
>>>>>>
>>>>>>можно так: rm -rf каталог_с_15000_ми_файлов
>>>>>
>>>>>Если не ошибаюсь, то можно и так:
>>>>>find . | xargs rm -f
>>>>>тогда он разобьет слишком длинный список на части.
>>>>
>>>>или так:
>>>>find . -exec rm -f {} ;
>>>>
>>>>:-)
>>>
>>>а не проще удалить директорию целиком!? если нужно чтобы она существовала,
>>>сперва mv ее с новым_именем, затем mkdir оригинальное_имя, после чего можно rm
>>>-rf новое_имя. И никаких образцов, поисков, выборок, парсинга
>>>и переполнения, нет?
>>
>>Не проще, если у директории установлены какие-нибудь специфические права доступа/флаги.
>
>это с каких дров если я администратор или владелец?
>
>не проще - это только в случае удаления ПО КРИТЕРИЮ, те НЕ
>ВСЕГО содержимого.

Даже если ты администратор - по умолчанию права на директорию будут 755 и без никаких флагов. Так, что их тебе потом придётся ручками ... Нет уж,  find . -exec rm -f {} ;  точно проще будет :-)


"Удалить файлы"
Отправлено Alex_M , 25-Июл-03 14:45 
>>это с каких дров если я администратор или владелец?

Даже если ты администратор - по умолчанию права на директорию будут 755 и без никаких флагов. Да + ещё владелец root:wheel. Так, что их тебе потом придётся ручками ... Нет уж,  find . -exec rm -f {} ;  точно проще будет :-)


"Удалить файлы"
Отправлено lavr , 25-Июл-03 14:50 
>>>>>>>все правильно человек написал
>>>>>>>шелл на rm -f ./* будет говорить что слишком длинный список
>>>>>>>
>>>>>>>можно так: rm -rf каталог_с_15000_ми_файлов
>>>>>>
>>>>>>Если не ошибаюсь, то можно и так:
>>>>>>find . | xargs rm -f
>>>>>>тогда он разобьет слишком длинный список на части.
>>>>>
>>>>>или так:
>>>>>find . -exec rm -f {} ;
>>>>>
>>>>>:-)
>>>>
>>>>а не проще удалить директорию целиком!? если нужно чтобы она существовала,
>>>>сперва mv ее с новым_именем, затем mkdir оригинальное_имя, после чего можно rm
>>>>-rf новое_имя. И никаких образцов, поисков, выборок, парсинга
>>>>и переполнения, нет?
>>>
>>>Не проще, если у директории установлены какие-нибудь специфические права доступа/флаги.
>>
>>это с каких дров если я администратор или владелец?
>>
>>не проще - это только в случае удаления ПО КРИТЕРИЮ, те НЕ
>>ВСЕГО содержимого.
>
>Даже если ты администратор - по умолчанию права на директорию будут 755
>и без никаких флагов. Так, что их тебе потом придётся ручками
>... Нет уж,  find . -exec rm -f {} ;
> точно проще будет :-)

:)

если я админ, права на $HOME пользователей у меня будут 711 или 700 c
chown пользователя (на серверах общего доступа с interactive-shell), остальное будет зависеть от umask, chmod и chown
публичных или скретчовых директорий - соответственно пользователю разрешено ВСЕ что не запрещено и с учетом стики-бит, так что НИКАКИХ
дополнительных извращений пользователю делать не нужно, если он навешивал
флаги - его и забота. Отсюда, проблема только одна - выборочное
удаление, в ином случае директория сносится на раз.


"Удалить файлы"
Отправлено Antonio , 25-Июл-03 15:13 
>>Не проще, если у директории установлены какие-нибудь специфические права доступа/флаги.
>
>это с каких дров если я администратор или владелец?

В частности, на файловой системе ext2 есть такая вещь, как флаг immutable. Если он есть, то до его снятия (chattr -i somefile) никто (в том числе рут) не может удалить, переименовать, дописать в такой файл; на него нельзя сделать симлинк. Этим обожают пользоваться всякие руткиты. А каталог суть тоже файл. Но касаемо каталога я лично immutable не проверял. ;-)


"Удалить файлы"
Отправлено lavr , 25-Июл-03 15:34 
>>>Не проще, если у директории установлены какие-нибудь специфические права доступа/флаги.
>>
>>это с каких дров если я администратор или владелец?
>
>В частности, на файловой системе ext2 есть такая вещь, как флаг immutable.
>Если он есть, то до его снятия (chattr -i somefile) никто
>(в том числе рут) не может удалить, переименовать, дописать в такой
>файл; на него нельзя сделать симлинк. Этим обожают пользоваться всякие руткиты.
>А каталог суть тоже файл. Но касаемо каталога я лично immutable
>не проверял. ;-)

парни, ну ей богу, они, immutable или kern.securelevel, с неба валятся!?

А вобщем, всех с праздником, удачи и успехов: "Давай за нас, давай за них..." :)


"Удалить файлы"
Отправлено DogEater , 25-Июл-03 15:56 
Присоединяюсь(насчёт праздника :-))
Интересно, а schtazen читал этот высоконаучный тред и помоголо или это ему?

"Удалить файлы"
Отправлено Alex_M , 25-Июл-03 16:12 
>>>>Не проще, если у директории установлены какие-нибудь специфические права доступа/флаги.
>>>
>>>это с каких дров если я администратор или владелец?
>>
>>В частности, на файловой системе ext2 есть такая вещь, как флаг immutable.
>>Если он есть, то до его снятия (chattr -i somefile) никто
>>(в том числе рут) не может удалить, переименовать, дописать в такой
>>файл; на него нельзя сделать симлинк. Этим обожают пользоваться всякие руткиты.
>>А каталог суть тоже файл. Но касаемо каталога я лично immutable
>>не проверял. ;-)
>
>парни, ну ей богу, они, immutable или kern.securelevel, с неба валятся!?
>
>А вобщем, всех с праздником, удачи и успехов: "Давай за нас, давай
>за них..." :)

Cогласен! :-)

PS Для полноты картины исправлю свою ошибку:
find . -exec rm -f {} ;
надо заменить на
find . -exec rm -f {} \;
;-)


"Удалить файлы"
Отправлено angelweb , 25-Июл-03 13:18 
>Какой командой удалить 15000 файлов в одной директории?


а из mc пробовал)


"Удалить файлы"
Отправлено schtazen , 28-Июл-03 17:13 
>Какой командой удалить 15000 файлов в одной директории?

#rm -rf /tmp/2002-2003
Удалил все конечно, вот только я не ожидал, что процесс может занять такое количество времени (все время убивал его)
Размер файла директории, кстати, занимал:
drwxrwxrwx  3 admin  wheel      512 Jul 17 14:52 .
drwxrwxrwt  7 root   wheel      512 Jul 28 14:39 ..
drwxr-xr-x  2 admin  wheel  1248768 Jul 24 18:31 2002-2003
1,2 MB!
Я также не ожидал такого количества предложенных вариантов
для удаления файлов! Спасибо всем ответившим!
15000 файлов я написал для примера, конечно.