Portál AbcLinuxu, 26. dubna 2024 20:54


Dotaz: Skript, který najde nulové soubory

6.1.2006 21:30 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Skript, který najde nulové soubory
Přečteno: 219×
Odpovědět | Admin
Potřeboval bych napsat skript, který by mi prošel celý disk a našel soubory, které obsahují v prvních 1024 bajtech jen samé nuly.

Po menší havárii disku mám několik souborů (patrně jen ty, co byly otevřeny pro zápis) nulové. Rád bych lokalizoval i ostatní.

Díky za každou radu
Later --- Lukáš Zapletal
Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.1.2006 21:41 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nejjednodušší, co mne napadá, je napsat si jednoduchý prográmek, který to otestuje na jednom souboru, a použít 'find ... -exec ...'.
6.1.2006 22:00 azurIt | skóre: 34 | blog: zatial_bez_mena
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
no tu to mas v python :) subory ktore splnaju podmienku vypise. velmi to som netestoval ale malo by to fungovat:
#!/usr/bin/env python
from os import walk

PATH = "/" # na konci cesty musi byt lomitko
DATA_COUNT = 1024
SEEK_FOR = "0"

for item in walk(PATH):
        for file in item[2]:
                file_obj = open("%s%s" % (item[0], file), "r")
                data = file_obj.read(DATA_COUNT)
                file_obj.close()
                if data != "":
                        isnull = 1
                        for i in data:
                                if i != SEEK_FOR:
                                        isnull = 0
                                        break
                        if isnull:
                                print "%s%s" % (item[0], file)
6.1.2006 22:10 azurIt | skóre: 34 | blog: zatial_bez_mena
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
taak znovu.. :) uz by to malo ist naozaj:
#!/usr/bin/env python
from os import walk

PATH = "/"
DATA_COUNT = 1024
SEEK_FOR = "0"

for item in walk(PATH):
        for file in item[2]:
                try:
                        file_obj = open("%s/%s" % (item[0], file), "r")
                        data = file_obj.read(DATA_COUNT)
                        file_obj.close()
                        if data != "":
                                isnull = 1
                                for i in data:
                                        if i != SEEK_FOR:
                                                isnull = 0
                                                break
                                if isnull:
                                        print "%s/%s" % (item[0], file)
                except IOError, error:
                        print error
Luboš Doležel (Doli) avatar 6.1.2006 22:42 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
To je nějaký vostrý. To se dá v Pythonu porovnávat hodnota bajtu s "0"? Celý kód mi připadá, jakoby se pracovalo se stringem.
6.1.2006 23:59 azurIt | skóre: 34 | blog: zatial_bez_mena
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
"Potřeboval bych napsat skript, který by mi prošel celý disk a našel soubory, které obsahují v prvních 1024 bajtech jen samé nuly."

ano mas pravdu, aspon tak ja chapem to zadanie
Luboš Doležel (Doli) avatar 6.1.2006 23:01 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
C++ program pro find...-exec
#include <cstdio>
#include <cassert>
#include <cstring>

int main(int argc,char** argv)
{
        FILE* file;
        char zbuf[1024], buf[1024];

        assert(argc == 2);

        file = fopen(argv[1], "rb");

        if(!file)
        {
                perror("testzero");
                return 1;
        }
        else
        {
                size_t read;

                memset(zbuf,0,sizeof(zbuf));
                read = fread(buf,1024,1,file);

                fclose(file);

                if(read)
                        return memcmp(zbuf,buf,read);
                else
                        return 1;
        }
}
Snad jsem ho v rychlosti udělal bez chyby.
Luboš Doležel (Doli) avatar 6.1.2006 23:03 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Teď vidím, že by se to dalo zkrátit tím, že bych dal return 1 jen na konec. No nic.
David Watzke avatar 6.1.2006 23:12 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Přesně takovou blbost jsem před nedávnem napsal do svýho skriptu. :-D
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 6.1.2006 23:13 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Ale moment... tohle je trochu něco jinýho... kdybys to dal nakonec, tak vrátí 1 i při úspěchu, nebo ne?
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Luboš Doležel (Doli) avatar 6.1.2006 23:15 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Ne.
6.1.2006 23:13 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
file=mktemp
dd if=/dev/zero of=$file bs=1024 count=1
find -xdev -type f -exec cmp -s -n 1024 $file {} \; -print
rm $file
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.1.2006 23:21 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
sorry, samozřejmě tam má být
file=$(mktemp)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.1.2006 01:20 Jiří (BoodOk) Kadeřávek | skóre: 19 | blog: BoodOk | Brno
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Je nejaky rozdil mezi `mktemp` a $(mktemp), nebo se jedna o ekvivalentni zapis?
Věda má v sobě určitou zpupnost, že čím dokonalejší techniku vyvineme, čím více se dozvíme, tím lepší budou naše životy.
David Watzke avatar 7.1.2006 01:27 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Stejný...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
7.1.2006 09:59 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Skoro, ten druhej zápis je IMHO čitelnější a hlavně ho jde do sebe zanořovat.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.1.2006 03:16 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
genialni :)
-- OldFrog
7.1.2006 09:41 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Přidávám se, smekám, děkuji všem. Právě mám nabootovaný záchranný systém a zchraňuji, co se dá.
7.1.2006 09:57 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Skript, který najde nulové soubory
Prd geniální, jsem měl myšlenkový zkrat. Ten pomocnej soubor je úplně zbytečný.
find -xdev -type f -exec cmp -s -n 1024 /dev/zero {} \; -print
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.