Nowe posty

Autor Wątek: [BASH] Usuwanie plików o rozmairze <50B  (Przeczytany 8942 razy)

ContraBoys

  • Gość
[BASH] Usuwanie plików o rozmairze <50B
« dnia: 2010-01-26, 15:06:21 »
“#!/bin/bash
for katalog in bufor
do
cd $katalog
x=$(du -sk | cut -f 1)
for plik in `find -type f | sort -b`; do
if [ $x -gt 500 ]; then
rm $plik
x=$(du -sk | cut -f 1)
else
break 1
fi
done
cd ..
done”

Czy ten skrypt zgadza się z treścia
Proszę napisać skrypt, który w sposób ciągły monitoruje (w tle)
katalog bufor i wykonuje na nim następujące operacje:
- usuwa pliki o rozmiarze < 50B,
- sprawdza sumaryczny rozmiar wszystkich plików w katalogu i po
przekroczeniu 500B usuwa z niego pliki najstarsze tak aby uzyskać sumaryczny rozmiar =<
500B.
 
Jak nie prosze poprawić żeby było zgodne z treścią bardzo prosze

arctgx

  • Gość
[BASH] Usuwanie plików o rozmairze <50B
« Odpowiedź #1 dnia: 2010-01-26, 15:16:54 »
Był sobie taki wątek: http://newbie.linux.pl/forum/viewtopic.php?id=15494

Sprawdziłeś w końcu sam czy robi on to co trzeba? Jak na razie, zdajesz się kontynuować pisanie w ciemno.

Dla uproszczenia, poszukaj w podręczniku man find warunku na rozmiar pliku oraz w man du jak formatować wynik, byś nie potrzebował przepuszczać go przez cut.

ContraBoys

  • Gość
[BASH] Usuwanie plików o rozmairze <50B
« Odpowiedź #2 dnia: 2010-01-26, 23:33:21 »
#!/bin/bash

min=50
max=500
dir="bufor"

function getSize()
{
    size=$(du -bc "${dir}"/* | tail -1 | cut -f1)
}

while [ 1 ]
do
    find "${dir}" -size -${min}c -delete -print
    getSize

    while [ $size -gt $max ]
    do
        file=$(ls -t "${dir}" | tail -1)
        rm -v "${dir}/${file}"
        getSize
    done

    sleep 1
done

Dobrze??

ZipoKing

  • Gość
[BASH] Usuwanie plików o rozmairze <50B
« Odpowiedź #3 dnia: 2010-01-27, 08:51:50 »
Kolego, czy sciągnąłeś sobie w końcu jakąś dystrybucję LiveCD i sam sprawdziłeś, czy nadal uważasz że Linux nie jest ci potrzebny do rozwiązania tego problemu i że rozwiążą go za ciebie forumowicze?
Jeżeli nadal będziesz natarczywie ignorował zasady tutaj panujące, niniejszy wątek zostanie usunięty a twoje konto zostanie zablokowane.

alexs2

  • Gość
[BASH] Usuwanie plików o rozmairze <50B
« Odpowiedź #4 dnia: 2010-01-27, 18:45:13 »
Drugiego listingu nie analizowałem, ale w tym pierwszym nie ma sprawdzania i kasowania plików mniejszych od 50 bajtów.

Robi to chyba komenda:

find katalog -size -50c -exec rm '{}' \\;

Offline Robert

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2516
    • Zobacz profil
[BASH] Usuwanie plików o rozmairze <50B
« Odpowiedź #5 dnia: 2010-01-27, 20:25:32 »
Dzięki takim, ja Ty windows teoretycznie działa dobrze, bo oni też analizują listingi. Ale nie mają odwagi uruchomić tego badziewia na swoich maszynach. To już jest ostatnia, że tak powiem zachęta do samodzielnego działania. Ostatnia przed banem.
Zanim popełnisz grafomaństwo: 1 | 2 | 3
Baza RPM Jak szukać informacji

arctgx

  • Gość
[BASH] Usuwanie plików o rozmairze <50B
« Odpowiedź #6 dnia: 2010-01-28, 15:51:17 »
Autor tego i zacytowanego wcześniej wątku przypomina mi kogoś, kto zalicza prawo jazdy, ale za kierownicę nie siądzie: próbuje zatrudnić do tego inną osobę, a sam sterować z tylnego fotela i patrzeć, jak to jest jeździć.