Portál AbcLinuxu, 26. dubna 2024 11:52


Dotaz: jednoduchy find

1.6.2005 09:32 Petr
jednoduchy find
Přečteno: 400×
Odpovědět | Admin
Potreboval bych pomoct s napsanim skriptu v bashi.. jednoduchy find, ktery vypisuje soubory z adresare a rekurzivne i z podardesaru.. zkousel jsem neco jako:
rekurse()
{
for f in *; do
  echo "$PWD/$f"
  if [ -d "$f" ]; then
      cd "$f"
      ls
      recurse
      cd ..
    fi
  done
}

recurse
ale asi je to blbost, protoze to nefunguje..:) mohl by mi nekdo prosim poradit? diky..
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.6.2005 09:37 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: jednoduchy find
Odpovědět | | Sbalit | Link | Blokovat | Admin
rekurse != recurse
1.6.2005 09:53 Petr
Rozbalit Rozbalit vše Re: jednoduchy find
jo jasne, promin, to ale neni pricina.. to jsem zvoral kdyz jsem to psal sem..
1.6.2005 10:09 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: jednoduchy find
Jinak to ale funguje, ne? Tedy v principu -- je tam ls navíc, chybí shopt -s dotglob nullglob, závistí to na CDPATH, GLOBIGNORE, ...
1.6.2005 10:14 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: jednoduchy find
... cyklí se to a symlincích, ...
1.6.2005 10:44 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: jednoduchy find
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proc proste nepouzit ls -R?
1.6.2005 11:02 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: jednoduchy find
To moc nevypadá jako výstup findu...
1.6.2005 11:08 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: jednoduchy find
To byl pozadavek? ls -A1R je tomu teda bliz...
1.6.2005 11:44 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: jednoduchy find
Možná by pomohlo podívat se na výstup findu ;-)
1.6.2005 11:04 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jednoduchy find
Odpovědět | | Sbalit | Link | Blokovat | Admin
Achich ouvej, kolik studentů ještě máte v tom kruhu?
1.6.2005 11:23 jm
Rozbalit Rozbalit vše Re: jednoduchy find
Uplne spatne, tohle je urcite jejich profesor. Prece - kdo to neumi, ten to uci, ne? :-)
1.6.2005 11:20 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: jednoduchy find
Odpovědět | | Sbalit | Link | Blokovat | Admin
Sice nevím proč nepoužít find nebo ls -R, ale k čemu je potřeba ls a cd mi hlava nebere
recurse(){
  for i in "$1${1:+/}"*
  do
    echo $i
    [ ! -L "$i" -a -d "$i" ] &&
      pok "$i"
  done
}
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é.
1.6.2005 11:24 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jednoduchy find
Sice nevím proč nepoužít find

Protože oni mají jako zápočťák napsat jakýsi velmi zjednodušený find jako shellový skript. Jestli se nepletu, tenhle je třetí…

1.6.2005 11:35 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: jednoduchy find
To je mi jasné :-) Jen jsem si chtěl rýpnout. Mám sto chutí to napsat nerekurzivně, ale není čas a zatím mě nenapadají zrovna hezké kousky kódu jak to udělat v bashi :-)
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é.
1.6.2005 11:39 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: jednoduchy find
Safr. Oprava: s/pok/recurse/
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é.
1.6.2005 20:12 Petr
Rozbalit Rozbalit vše Re: jednoduchy find
to je super, jen da se to nejak udelat aby to hledalo i soubory zacinajici teckou?
Josef Kufner avatar 1.6.2005 20:40 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: jednoduchy find
a dostaneme pak ten zapocet misto tebe ? ;-)
Hello world ! Segmentation fault (core dumped)
1.6.2005 20:50 Petr
Rozbalit Rozbalit vše Re: jednoduchy find
no nejak se to naucit musim, ze? :)
1.6.2005 21:03 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: jednoduchy find
Naučíš se to tak, že si v manuálové stránce najdeš, o čem píšeme v tomto a tomto příspěvku, a opravíš to. Pichiho řešení je elegantnější (i když mně by pushd/popd nepřišlo jako tak špatné řešení), ale stejně řeší jen část uvedených problémů.
2.6.2005 09:27 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: jednoduchy find
Souhlasím s tím, že na cd, potažmo pushd/popd není nic špatného jelikož jsou to interní příkazy bashe, akorát na tento úkol potřeba nejsou. Co s tečkou už ti poradil Yeti. Krom toho je ještě jedno řešení {.,}* ale man bash ti poradí tisíckrát lépe. Jinak to zůstane jen černá magie.
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é.
2.6.2005 09:34 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: jednoduchy find
Výsledky
shopt -s dotglob
echo *
a
echo {.,}*
se ovšem kromě pořadí výpisu liší i v tom, že druhý vypisuje i . a .. -- to se asi někdy hodí, ale zde by to byla komplikace.
2.6.2005 09:59 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: jednoduchy find

Jojo, to máš pravdu. To už jsem jednou řešil při hledání největšího bumbrlíčka

du -s {.[^.],}* | sort -n | tail
To je tak, kyž si někdo nepřečte bash(1) :-) Mimo to mě napadlo řešení, které výpis udělá víc podobný findu nahradit $1${1:+/} elegantnějším ${1:-.}/

P.S.: A schválně nenapíšu to úplně konečné řešení :-)

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é.
2.6.2005 10:25 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: jednoduchy find
A vůbec. Nejlepší je stejně použít shopt (protože co se soubory nebo adresáři co mají na začátku dvě tečky, že by {.[^.],..?,}* :-D ). Krom toho tam stejně ještě mám chybku související s prázdnými adresáři (malá nápověda, i při tisku výsledku by se mělo ověřit, jestli danému výsledku něco odpovídá ve skutečnosti).
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é.
2.6.2005 10:59 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: jednoduchy find
O té chybce s prázdnými adresáři jsem psal hned na začátku. Já mám tak nastavený i interaktivní shell a přijde mi to lepší...
2.6.2005 13:11 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: jednoduchy find
Aha, nullglob. Já si ten bash(1) vážně budu muset jednou přečíst.
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.