Strona 1 z 1

Skrypt do czyszczenia cache'u, bardzo dużo plików.

: 03 mar 2009, 00:49
autor: sibul
Witam, nie mam pomysłu na napisanie skryptu bashowego lub byle jakiego, którego działaniem jest skasowanie bardzo dużej ilości plików z danego folderu.
polecenie

Kod: Zaznacz cały

rm -f /sciezka/folder/cache_*
Niestety nie czyści plików cache_* bo jest ich za duża ilość.
Mam pomysł żeby jakoś zliczyć pliki cache_* i usuwać je partiami ale nie mam pojęcia jak to zrealizować. Pozdrawiam

Odp: Skrypt do czyszczenia cache'u, bardzo dużo plików.

: 03 mar 2009, 06:44
autor: Hagal

Kod: Zaznacz cały

find /sciezka/folder -type f -name cache_* -exec rm {} \;

Odp: Skrypt do czyszczenia cache'u, bardzo dużo plików.

: 04 mar 2009, 00:04
autor: хur
pytanie czy OP życzy sobie żeby mu sprzątało również podkatalogi (jeśli takowe są).

Jeśli nie to miło by było dodać opcję -maxdepth 1.

ponieważ cache_* nie jest w cudzysłowach to zostanie
wpierw rozwinięte przez shell (no chyba że sobie ktoś
globbing wyłączy) i wynik tegoż rozwinięcia zostanie zapodany
do find. Tak więc imo powinno być 'cache_*' a nie cache_*.

Afaik jeśli to polecenie zakończymy plusem (+) nie średnikiem ( ; )
to rm będzie dostawało wiele wyników, ale tyle ile jest w stanie
przyjąć więc [...] rm '{}' + może się okazać szybsze niż [...] rm '{}' \;

tzn proponuję coś takiego

Kod: Zaznacz cały

find  /sciezka/folder -maxdepth 1 -type f -name 'cache_*' -exec rm '{}' +

Odp: Skrypt do czyszczenia cache'u, bardzo dużo plików.

: 04 mar 2009, 00:26
autor: sibul
Zrobiłem to trochę innaczej :)
Poprostu częściej czyszcze cache, wpływa to nawet lepiej na działanie bo nie zabija się nic cachem.
Ustawiłem do CRON'a

Kod: Zaznacz cały

1 */4 * * * /home/cache
A w nim skrypt bash z poleceniem

Kod: Zaznacz cały

rm -f /sciezka/cache/cache_*
I działa :)