abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 00:11 | Zajímavý článek

Daniel Vetter se v příspěvku Upstream Graphics: Too Little, Too Late (Grafika v upstreamu: příliš málo, příliš pozdě) na svém blogu věnuje podpoře a problémům grafiky v upstream Linuxu. Jedná se o souhrn jeho stejnojmenné přednášky na Linux Plumbers Conference (videozáznam, pdf).

Ladislav Hagara | Komentářů: 0
včera 23:33 | Komunita

Na YouTube lze zhlédnout čtrnáctiminutový dokument televize CNBC s názvem The Rise Of Open-Source Software (Vzestup open source softwaru).

Ladislav Hagara | Komentářů: 0
včera 22:22 | Nová verze

Po roce od vydání verze 6.0 byla vydána nová major verze 6.1 multiplatformního virtualizačního nástroje Oracle VM VirtualBox. Přehled novinek v Changelogu. Nově lze například importovat virtuální počítač z infrastruktury Oracle Cloud.

Ladislav Hagara | Komentářů: 0
včera 20:11 | IT novinky

GOG nabízí klasickou cRPG Wasteland 2 do pátku 13. prosince 2019 zdarma. Hra je k dispozici pro Linux (oficiálně Ubuntu LTS) a bez DRM. Stojí za ní inXile Entertainment, navazující na Interplay, od nějž pochází původní Wasteland (1988) či Fallout.

Fluttershy, yay! | Komentářů: 0
včera 17:11 | Komunita

osxfuse, implementace FUSE (Filesystem in Userspace) na macOS, již není open source. Autor se prostě rozhodl zdrojové kódy pod licencí BSD dál nešířit. Diskuse na Hacker News.

Ladislav Hagara | Komentářů: 13
včera 10:44 | Zajímavý projekt

Na Humble Bundle běží akce Humble Paradox Management Bundle. Počítačové hry v balíčcích za 1 dolar, 7,91 dolaru a 18 dolarů běží také na Linuxu. Jedná se o série Prison Architect, Cities in Motion, Cities: Skylines a Surviving Mars.

Ladislav Hagara | Komentářů: 0
10.12. 22:55 | Bezpečnostní upozornění

Byl vydán Git ve verzích 2.24.1, 2.23.1, 2.22.2, 2.21.1, 2.20.2, 2.19.3, 2.18.2, 2.17.3, 2.16.6, 2.15.4 a 2.14.6. Opraveno je 9 bezpečnostních chyb: CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387 a CVE-2019-19604, viz například Ubuntu USN-4220-1.

Ladislav Hagara | Komentářů: 0
10.12. 22:33 | Nová verze

Google Chrome 79 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 79.0.3945.79 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře. Opraveno bylo 51 bezpečnostních chyb. Za nalezení nejvážnější z nich bylo vyplaceno 20 tisíc dolarů.

Ladislav Hagara | Komentářů: 0
10.12. 22:11 | Nová verze

V září Microsoft potvrdil, že portuje klienta Microsoft Teams na Linux. Dnes byla vydána první veřejná verze k testování. Ke stažení jsou balíčky .deb a .rpm. Microsoft Teams je firemní platforma, která umožňuje textovou komunikaci, video hovory, datové úložiště pro ukládání souborů (na těchto souborech lze také spolupracovat) a integraci dalších aplikací do tohoto prostředí. Služba je integrována v předplatném Office 365.

Ladislav Hagara | Komentářů: 9
10.12. 15:22 | IT novinky

Společnost PFU (divize Fujitsu) představila (prezentace v japonštině) novou generaci Happy Hacking Keyboard, řady klávesnic původně navržené Eiiči Wadou pro unixové systémy začátkem 90. let – bez nutnosti přidání dalších fyzických kláves. Nové modely (Hybrid, Hybrid Type-S a Classic) navazují na řadu Pro 2, stále je tedy vyrábí Topre a používají příslušné kapacitní spínače, všechny se ale nově připojují přes USB-C a „Hybrid“ navíc podporuje i Bluetooth.

Fluttershy, yay! | Komentářů: 45
Jaké hodinky nosíte (nejčastěji)?
 (23%)
 (5%)
 (17%)
 (54%)
Celkem 563 hlasů
 Komentářů: 135, poslední 6.12. 20:54
Rozcestník
Štítky: není přiřazen žádný štítek

www.AutoDoc.Cz

Dotaz: Jak rekurzivně spočítat všechny položky v adresáři.

6.2. 10:52 ferda
Jak rekurzivně spočítat všechny položky v adresáři.
Přečteno: 452×
Ahoj, Potřebuji rekurzivně spočítat všechny položky v adresáři a našel jsem tohle. Nejde to prosím napsat tak, aby to prohledával jen jednou?

d=$(find . -type d | wc -l)
f=$(find . -type f | wc -l)
echo "There are $d directories and $f files"

Odpovědi

6.2. 11:12 ondrejd
Rozbalit Rozbalit vše Re: Jak rekurzivně spočítat všechny položky v adresáři.
6.2. 11:16 ferda
Rozbalit Rozbalit vše Re: Jak rekurzivně spočítat všechny položky v adresáři.
Moc děkuji.
6.2. 12:56 Andrej | skóre: 47 | blog: Republic of Mordor | Zürich
Rozbalit Rozbalit vše Re: Jak rekurzivně spočítat všechny položky v adresáři.

Účelem domácího úkolu je, aby se nad ním student sám zamyslel, ne aby se na něj anonymně ptal na ABCLinuxu. :-(

Zpět k tématu: Jde to dokonce i bez jakýchkoliv externích procesů (ls, find), pouze pomocí Bashe. Jediné, na co je třeba si dát pozor, je zvláštní chování find k symlinkům. Implicitně (-P) je nenásleduje (což se dá změnit pomocí -L), zatímco Bash při testování cest symlinky vždy následuje, jinými slovy, máme-li symlink na soubor, [[ -f symlink ]] i [[ -L symlink ]] uspějí.

Pokud tohle^^^ vezmeme v potaz, tady je implementace jen pomocí Bashe a ničeho jiného:

rlist() {
  local -r dir="$1"
  local -i files=0
  local -i dirs=1
  local -i links=0
  local -i other=0
  local -a -i rec
  local item
  for item in "${dir}/"{,.[^.],..?}*; do
    if [[ -L "$item" ]]; then
      ((++links))
    elif [[ -f "$item" ]]; then
      ((++files))
    elif [[ -d "$item" ]]; then
      rec=($(rlist "$item"))
      files+=rec[0]
      dirs+=rec[1]
      links+=rec[2]
      other+=rec[3]
    elif [[ -e "$item" ]]; then
      ((++other))
    fi
  done
  echo "$files" "$dirs" "$links" "$other"
}

count() {
  local -a -i -r rec=($(rlist "$1"))
  echo "There are ${rec[1]} directories" \
       "and ${rec[0]} files" \
       "and ${rec[2]} symlinks" \
       "and ${rec[3]} other inodes."
}

Příklad: count /můj/adresář

Implementace ekvivalentu find -L by byla jednoduší; stačilo by odstranit větev a proměnnou pro symlinky.

ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
6.2. 13:45 NN
Rozbalit Rozbalit vše Re: Jak rekurzivně spočítat všechny položky v adresáři.
No to je sice fajn, ze to zvladnes ciste v bashi Andreji, ale pokud tazatel resi problem na urovni "hledani na internetu", je uplne jedno jestli je to ukol nebo neni, tak to naopak jen odradi od dalsiho usili a snazeni..
6.2. 14:01 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Jak rekurzivně spočítat všechny položky v adresáři.
…je uplne jedno jestli je to ukol nebo neni, tak to naopak jen odradi od dalsiho usili a snazeni..
Pokud někdo není ochoten věnovat tomu aby se něco naučil trochu toho úsilí a snažení, tak bude jen dobře když skončí u OS, kde si za svou lenost zaplatí.
6.2. 14:43 .
Rozbalit Rozbalit vše Re: Jak rekurzivně spočítat všechny položky v adresáři.
Jinak zdravej?
6.2. 14:46 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Jak rekurzivně spočítat všechny položky v adresáři.
Nestěžuji si. Děkuji za optání. Po vás taky žádná sháňka nebude.
6.2. 21:07 Andrej | skóre: 47 | blog: Republic of Mordor | Zürich
Rozbalit Rozbalit vše Re: Jak rekurzivně spočítat všechny položky v adresáři.
  1. O jakém úsilí a snažení je řeč? Žádné jsem na straně tazatele nezaznamenal — snad kromě toho, že některé své dotazy duplikuje v poradně na lživě.cz.
  2. Proč by mě mělo jakkoliv znepokojovat, že tohle někoho odradí? Popsal jsem řešení, které podle mého mínění splňuje zadání (jeden průchod) a funguje. Dokonce jsem — kromě postesknutí nad domácím úkolem „řeseným“ v poradně — tentokrát udržel svou obvyklou aroganci celkem na uzdě. Pokud mé řešení samo od sebe někoho odradí od „snažení“, možná pro takového člověka není informatika / IT správná volba.
ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ

Založit nové vláknoNahoru

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

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.