Portál AbcLinuxu, 10. května 2025 11:37

Dotaz: naleze adresaru neobsahujicich urcioty soubor

19.7.2006 23:15 kanon | skóre: 8 | blog: dist
naleze adresaru neobsahujicich urcioty soubor
Přečteno: 95×
Odpovědět | Admin
ahoj

generuji si neco kolem 5000 adresaru ( cleneni je jednoduche 1 az 5000, zadny slozity strom) , kde kazdy adresar by mel obsahovat index.html

po generovani nejprve provadim kontrolu,zda jsou nejake adresare prazdne pomoci

find -depth -type d -empty

dale kontroluji soucet adresaru obsahujici index.html

find . -name "index.html" | wc -l

ale zaboha nemuzu prijit na to jak si vypsat ty ktere neobsahuji prave index.html

dekuji za jakekoliv nastouchnuti
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.7.2006 23:35 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: naleze adresaru neobsahujicich urcioty soubor
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud tam nemáte někde adresář s newlinem v názvu, mělo by stačit tohle:
  find . -type d \
    | while read d; do
        test -f "$d/index.html" || echo "$d"
      done
19.7.2006 23:37 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: naleze adresaru neobsahujicich urcioty soubor
Odpovědět | | Sbalit | Link | Blokovat | Admin
První blbé řešení (hotové za půl minuty :-) )...
bash$ find  -type f -name 'cervene.vino' -exec dirname {} \; | uniq |sort > x
bash$ find  -type d | uniq |sort > y 
bash$ diff x y|grep \>
19.7.2006 23:39 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: naleze adresaru neobsahujicich urcioty soubor
Odpovědět | | Sbalit | Link | Blokovat | Admin
sice je to dost krkolomné ale zrovna mě jiného nenapadlo:
ls  */index.html > a
ls > b
sed 's#/index.html##g' a > c
diff b c
určitě ale existuje lepší řešení
19.7.2006 23:56 kanon | skóre: 8 | blog: dist
Rozbalit Rozbalit vše Re: naleze adresaru neobsahujicich urcioty soubor
diky za rady ja to prave delal takhle

ls > a.txt find . -name "index.html" > b.txt sed s%./%% b.txt > c.txt sed s%/index.html%% c.txt > d.txt diff d.txt c.txt

ale trosku krkolomny
20.7.2006 10:52 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: naleze adresaru neobsahujicich urcioty soubor
Hlavně dost neefektivní, zbytečně vytváříte tři pomocné soubory, které pak musíte ne úplně triviálním způsobem procházet.
20.7.2006 12:52 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: naleze adresaru neobsahujicich urcioty soubor
nakonec je to docela jedno, hlavně když to aspoň trochu funguje ne? ;)
20.7.2006 20:02 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: naleze adresaru neobsahujicich urcioty soubor
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tohleto:
#!/usr/bin/env python
import os
empty_dirs = []
with_index_html = []
without_index_html = []

for root, dirs, files in os.walk('.'):
    if not 'index.html' in files:
        without_index_html.append(root)
    else:
        with_index_html.append(root)
    if not files and not dirs:
        empty_dirs.append(root)
        
print 'Techto', len(with_index_html), 'adresaru obsahuje index.html:'
print '\n'.join(with_index_html)
print 'Techto', len(without_index_html),'adresaru NEobsahuje index.html:'
print '\n'.join(without_index_html)
print 'Techto', len(empty_dirs), 'je prazdnych:'
print '\n'.join(empty_dirs)
Udělá všechny ty věci, o kterých jsi psal. Tedy zjistí to, které adresáře obsahují index.html, které adresáře jej neobsahují a které adresáře jsou prázdné. U každé kategorie to vypíše počet adresářů i které to jsou.
Výhodou je, že se adresářová struktura prochází pouze jednou.

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.