Всем привет!
Пожалуйста, кто может, подскажите, как отыскивать и удалять все файлы из папок пользователей, например, с названием spam, в которых есть подпапки new. Из этих new и надо удалять накапливающиеся файлики.
У меня Линукс. Я нарыл типа такой команды:
find /home/ -type d -name "spam" -exec rm -Rf {} \;Но при этом удаляется вся папка spam. А нужно удалить все файлы из /spam/new/*
имхо, просто
rm -rf /home/*/spam/new/*
>имхо, просто
>rm -rf /home/*/spam/new/*Да, верно. Но так удаляются все файлы, кроме скрытых. А как можно удалить еще и скрытые файлы?
>>имхо, просто
>>rm -rf /home/*/spam/new/*
>
>Да, верно. Но так удаляются все файлы, кроме скрытых. А как можно
>удалить еще и скрытые файлы?
при удалении через rm -rf есть вероятность неудаления (если кол-во файлов больше
какой-то величины, точно не помню, но что-то типа 1024)
Поэтому проще будет так
for i in `ls -a /home/*/spam/new`; do rm -rf $i; done
И скрытые удалишь..:))
>>>имхо, просто
>>>rm -rf /home/*/spam/new/*
>>
>>Да, верно. Но так удаляются все файлы, кроме скрытых. А как можно
>>удалить еще и скрытые файлы?
>
>
>при удалении через rm -rf есть вероятность неудаления (если кол-во файлов больше
>
>какой-то величины, точно не помню, но что-то типа 1024)
>Поэтому проще будет так
>for i in `ls -a /home/*/spam/new`; do rm -rf $i; done
>И скрытые удалишь..:))По поводу 1-го предложения - файлы из папок /spam/new/ не удаляются, ситема пишет:
root@mail # rm /home/*/spam/new/*
rm: cannot remove `/home/*/spam/new/*': No such file or directory(я убрал -rf чтобы посмотреть, почему файлы не удаляются)
По второму:
ситема просто переводит курсор на 2-ую строку и ждет ввода:
root@mail # for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf $i; done
>то есть - не закончена сама команда. Тогда, как ее закончить правильно?
>>>>имхо, просто
>>>>rm -rf /home/*/spam/new/*
>>>
>>>Да, верно. Но так удаляются все файлы, кроме скрытых. А как можно
>>>удалить еще и скрытые файлы?
>>
>>
>>при удалении через rm -rf есть вероятность неудаления (если кол-во файлов больше
>>
>>какой-то величины, точно не помню, но что-то типа 1024)
>>Поэтому проще будет так
>>for i in `ls -a /home/*/spam/new`; do rm -rf $i; done
>>И скрытые удалишь..:))
>
>По поводу 1-го предложения - файлы из папок /spam/new/ не удаляются, ситема
>пишет:
>root@mail # rm /home/*/spam/new/*
>rm: cannot remove `/home/*/spam/new/*': No such file or directory
>
>(я убрал -rf чтобы посмотреть, почему файлы не удаляются)
>
>По второму:
>ситема просто переводит курсор на 2-ую строку и ждет ввода:
>root@mail # for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf $i;
>done
>>
>
> то есть - не закончена сама команда. Тогда, как ее закончить
>правильно?Апостроф правильный после new/* поставь....:))) Это тот, который рядом с клавишей 1
обычно располагается...
И еще...я немного не правильно написал...надо do rm -rf /temp/home/*/spam/new/$i; done
>>>>>имхо, просто
>>>>>rm -rf /home/*/spam/new/*
>>>>
>>>>Да, верно. Но так удаляются все файлы, кроме скрытых. А как можно
>>>>удалить еще и скрытые файлы?
>>>
>>>
>>>при удалении через rm -rf есть вероятность неудаления (если кол-во файлов больше
>>>
>>>какой-то величины, точно не помню, но что-то типа 1024)
>>>Поэтому проще будет так
>>>for i in `ls -a /home/*/spam/new`; do rm -rf $i; done
>>>И скрытые удалишь..:))
>>
>>По поводу 1-го предложения - файлы из папок /spam/new/ не удаляются, ситема
>>пишет:
>>root@mail # rm /home/*/spam/new/*
>>rm: cannot remove `/home/*/spam/new/*': No such file or directory
>>
>>(я убрал -rf чтобы посмотреть, почему файлы не удаляются)
>>
>>По второму:
>>ситема просто переводит курсор на 2-ую строку и ждет ввода:
>>root@mail # for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf $i;
>>done
>>>
>>
>> то есть - не закончена сама команда. Тогда, как ее закончить
>>правильно?
>
>Апостроф правильный после new/* поставь....:))) Это тот, который рядом с клавишей 1
>
>обычно располагается...
>И еще...я немного не правильно написал...надо do rm -rf /temp/home/*/spam/new/$i; doneСорри, я запутался, как надо написать?
Так:
for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf /temp/home/*/spam/new/$i; done
>>>>>>имхо, просто
>>>>>>rm -rf /home/*/spam/new/*
>>>>>
>>>>>Да, верно. Но так удаляются все файлы, кроме скрытых. А как можно
>>>>>удалить еще и скрытые файлы?
>>>>
>>>>
>>>>при удалении через rm -rf есть вероятность неудаления (если кол-во файлов больше
>>>>
>>>>какой-то величины, точно не помню, но что-то типа 1024)
>>>>Поэтому проще будет так
>>>>for i in `ls -a /home/*/spam/new`; do rm -rf $i; done
>>>>И скрытые удалишь..:))
>>>
>>>По поводу 1-го предложения - файлы из папок /spam/new/ не удаляются, ситема
>>>пишет:
>>>root@mail # rm /home/*/spam/new/*
>>>rm: cannot remove `/home/*/spam/new/*': No such file or directory
>>>
>>>(я убрал -rf чтобы посмотреть, почему файлы не удаляются)
>>>
>>>По второму:
>>>ситема просто переводит курсор на 2-ую строку и ждет ввода:
>>>root@mail # for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf $i;
>>>done
>>>>
>>>
>>> то есть - не закончена сама команда. Тогда, как ее закончить
>>>правильно?
>>
>>Апостроф правильный после new/* поставь....:))) Это тот, который рядом с клавишей 1
>>
>>обычно располагается...
>>И еще...я немного не правильно написал...надо do rm -rf /temp/home/*/spam/new/$i; done
>
>Сорри, я запутался, как надо написать?
>Так:
>for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf /temp/home/*/spam/new/$i; done
Вот так
for i in `ls -a /temp/home/*/spam/new`; do rm -rf /temp/home/*/spam/new/$i; done;
Обрати внимание на апостроф перед ls и после new.....
Если не уверен, так поставь
for i in `ls -a /temp/home/*/spam/new`; do echo $i;done;
Выведет все что найдет....
>>>>>>>имхо, просто
>>>>>>>rm -rf /home/*/spam/new/*
>>>>>>
>>>>>>Да, верно. Но так удаляются все файлы, кроме скрытых. А как можно
>>>>>>удалить еще и скрытые файлы?
>>>>>
>>>>>
>>>>>при удалении через rm -rf есть вероятность неудаления (если кол-во файлов больше
>>>>>
>>>>>какой-то величины, точно не помню, но что-то типа 1024)
>>>>>Поэтому проще будет так
>>>>>for i in `ls -a /home/*/spam/new`; do rm -rf $i; done
>>>>>И скрытые удалишь..:))
>>>>
>>>>По поводу 1-го предложения - файлы из папок /spam/new/ не удаляются, ситема
>>>>пишет:
>>>>root@mail # rm /home/*/spam/new/*
>>>>rm: cannot remove `/home/*/spam/new/*': No such file or directory
>>>>
>>>>(я убрал -rf чтобы посмотреть, почему файлы не удаляются)
>>>>пардон, канешна, но откуда в папке "spam" скрытые? если тока примера для...
а насчет 1024, кажись зависит от сборки :)
ну, если по второму, то после new надо ставить слэш, иначе ls -a выдаст тока каталог
>>>>По второму:
>>>>ситема просто переводит курсор на 2-ую строку и ждет ввода:
>>>>root@mail # for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf $i;
>>>>done
>>>>>
>>>>
>>>> то есть - не закончена сама команда. Тогда, как ее закончить
>>>>правильно?
>>>
>>>Апостроф правильный после new/* поставь....:))) Это тот, который рядом с клавишей 1
>>>
>>>обычно располагается...
>>>И еще...я немного не правильно написал...надо do rm -rf /temp/home/*/spam/new/$i; done
>>
>>Сорри, я запутался, как надо написать?
>>Так:
>>for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf /temp/home/*/spam/new/$i; done
>
>
>Вот так
>for i in `ls -a /temp/home/*/spam/new`; do rm -rf /temp/home/*/spam/new/$i; done;
>Обрати внимание на апостроф перед ls и после new.....
>Если не уверен, так поставь
>for i in `ls -a /temp/home/*/spam/new`; do echo $i;done;
>Выведет все что найдет....пардон, канешна, но откуда в папке "spam" скрытые? если тока примера для...
а насчет 1024, кажись зависит от сборки :)
ну, если по второму, то после new надо ставить слэш, иначе ls -a выдаст тока каталог
(админам форума) фигасе эффект!! :) дважды нажал кнопку отправить (тормоза были :)), а получил такое :)
>>>>>>>>имхо, просто
>>>>>>>>rm -rf /home/*/spam/new/*
>>>>>>>
>>>>>>>Да, верно. Но так удаляются все файлы, кроме скрытых. А как можно
>>>>>>>удалить еще и скрытые файлы?
>>>>>>
>>>>>>
>>>>>>при удалении через rm -rf есть вероятность неудаления (если кол-во файлов больше
>>>>>>
>>>>>>какой-то величины, точно не помню, но что-то типа 1024)
>>>>>>Поэтому проще будет так
>>>>>>for i in `ls -a /home/*/spam/new`; do rm -rf $i; done
>>>>>>И скрытые удалишь..:))
>>>>>
>>>>>По поводу 1-го предложения - файлы из папок /spam/new/ не удаляются, ситема
>>>>>пишет:
>>>>>root@mail # rm /home/*/spam/new/*
>>>>>rm: cannot remove `/home/*/spam/new/*': No such file or directory
>>>>>
>>>>>(я убрал -rf чтобы посмотреть, почему файлы не удаляются)
>>>>>
>
>пардон, канешна, но откуда в папке "spam" скрытые? если тока примера для...
>
>а насчет 1024, кажись зависит от сборки :)
>ну, если по второму, то после new надо ставить слэш, иначе ls
>-a выдаст тока каталог
>>>>>По второму:
>>>>>ситема просто переводит курсор на 2-ую строку и ждет ввода:
>>>>>root@mail # for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf $i;
>>>>>done
>>>>>>
>>>>>
>>>>> то есть - не закончена сама команда. Тогда, как ее закончить
>>>>>правильно?
>>>>
>>>>Апостроф правильный после new/* поставь....:))) Это тот, который рядом с клавишей 1
>>>>
>>>>обычно располагается...
>>>>И еще...я немного не правильно написал...надо do rm -rf /temp/home/*/spam/new/$i; done
>>>
>>>Сорри, я запутался, как надо написать?
>>>Так:
>>>for i in `ls -a /temp/home/*/spam/new/*'; do rm -rf /temp/home/*/spam/new/$i; done
>>
>>
>>Вот так
>>for i in `ls -a /temp/home/*/spam/new`; do rm -rf /temp/home/*/spam/new/$i; done;
>>Обрати внимание на апостроф перед ls и после new.....
>>Если не уверен, так поставь
>>for i in `ls -a /temp/home/*/spam/new`; do echo $i;done;
>>Выведет все что найдет....
>
>пардон, канешна, но откуда в папке "spam" скрытые? если тока примера для...
>
>а насчет 1024, кажись зависит от сборки :)
>ну, если по второму, то после new надо ставить слэш, иначе ls
>-a выдаст тока каталог
По поводу 1024....я на это наткнулся на одной фряхе (сейчас не помню, но что-то типа
4.8-STABLE)...выдавал ошибку argument list too long...:))
а насчет ставить слеш или нет...я ж нарисовал..пускай поставит сначала echo $i, а там
видно будет....мож там шелл какой-нить хитрый...:)))
>По поводу 1024....я на это наткнулся на одной фряхе (сейчас не помню,
>но что-то типа
>4.8-STABLE)...выдавал ошибку argument list too long...:))
>а насчет ставить слеш или нет...я ж нарисовал..пускай поставит сначала echo $i,
>а там
>видно будет....мож там шелл какой-нить хитрый...:)))В linux тоже есть такое. Это проблема bash, только конечно не 1024, а десятки, а то и сотни тысяч файлов должны быть
>
>>По поводу 1024....я на это наткнулся на одной фряхе (сейчас не помню,
>>но что-то типа
>>4.8-STABLE)...выдавал ошибку argument list too long...:))
>>а насчет ставить слеш или нет...я ж нарисовал..пускай поставит сначала echo $i,
>>а там
>>видно будет....мож там шелл какой-нить хитрый...:)))
>
>В linux тоже есть такое. Это проблема bash, только конечно не 1024,
>а десятки, а то и сотни тысяч файлов должны быть
А вопрос, конечно, интересный...Я на днях залез во фряхе в исходник rm и
не нашел каких-либо ограничений. Т.е. есть ограничение ставится где-то в libc на **argv
Где бы это поискать/почитать ? Не в курсе?