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í
×
    včera 15:22 | IT novinky

    Eric Lengyel dobrovolně uvolnil jako volné dílo svůj patentovaný algoritmus Slug. Algoritmus vykresluje text a vektorovou grafiku na GPU přímo z dat Bézierových křivek, aniž by využíval texturové mapy obsahující jakékoli předem vypočítané nebo uložené obrázky a počítá přesné pokrytí pro ostré a škálovatelné zobrazení písma, referenční ukázka implementace v HLSL shaderech je na GitHubu. Slug je volným dílem od 17. března letošního

    … více »
    NUKE GAZA! 🎆 | Komentářů: 0
    včera 15:11 | Zajímavý projekt

    Sashiko (GitHub) je open source automatizovaný systém pro revizi kódu linuxového jádra. Monitoruje veřejné mailing listy a hodnotí navrhované změny pomocí umělé inteligence. Výpočetní zdroje a LLM tokeny poskytuje Google.

    Ladislav Hagara | Komentářů: 5
    včera 04:44 | Zajímavý software

    Cambalache, tj. RAD (rapid application development) nástroj pro GTK 4 a GTK 3, dospěl po pěti letech vývoje do verze 1.0. Instalovat jej lze i z Flathubu.

    Ladislav Hagara | Komentářů: 0
    20.3. 14:55 | Nová verze

    KiCad (Wikipedie), sada svobodných softwarových nástrojů pro počítačový návrh elektronických zařízení (EDA), byl vydán v nové major verzi 10.0.0 (𝕏). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    20.3. 13:22 | IT novinky

    Letošní Turingovou cenu (2025 ACM A.M. Turing Award, Nobelova cena informatiky) získali Charles H. Bennett a Gilles Brassard za základní přínosy do oboru kvantové informatiky, které převrátily pojetí bezpečné neprolomitelné komunikace a výpočetní techniky. Jejich protokol BB84 z roku 1984 umožnil fyzikálně zaručený bezpečný přenos šifrovacích klíčů, zatímco jejich práce o kvantové teleportaci položila teoretické základy pro budoucí kvantový internet. Jejich práce spojila fyziku s informatikou a ovlivnila celou generaci vědců.

    Ladislav Hagara | Komentářů: 7
    20.3. 04:44 | Zajímavý článek

    Firefox 149 dostupný od 24. března přinese bezplatnou vestavěnou VPN s 50 GB přenesených dat měsíčně (s CZ a SK se zatím nepočítá) a zobrazení dvou webových stránek vedle sebe v jednom panelu (split view). Firefox Labs 149 umožní přidat poznámky k panelům (tab notes, videoukázka).

    Ladislav Hagara | Komentářů: 2
    20.3. 00:33 | Nová verze

    Byla vydána nová stabilní verze 7.9 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 146. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    20.3. 00:11 | Zajímavý software

    Dle plánu byla vydána Opera GX pro Linux. Ke stažení je .deb i .rpm. V plánu je flatpak. Opera GX je webový prohlížeč zaměřený na hráče počítačových her.

    Ladislav Hagara | Komentářů: 7
    19.3. 19:22 | Nová verze

    GNUnet (Wikipedie) byl vydán v nové major verzi 0.27.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.

    Ladislav Hagara | Komentářů: 0
    19.3. 04:00 | Bezpečnostní upozornění

    Byly publikovány informace (technické detaily) o bezpečnostním problému Snapu. Jedná se o CVE-2026-3888. Neprivilegovaný lokální uživatel může s využitím snap-confine a systemd-tmpfiles získat práva roota.

    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1126 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Dotaz: procházení adresářů a kopírování souborů a jejich přejmenování jinam

    23.11.2018 10:42 Honza
    procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Přečteno: 478×
    Mám adresáře A1-A12, B1-B12 atd. a v každém je soubor s názvem "assembly.fa", ale jeho obsah je v každém adresáři jiný. Potřebuji tyto soubory překopírovat třeba do /home s tím, že se soubor přejmenuje podle názvu adresáře. Tj. z adresáře A1 se bude jmenovat A1assembly.fa atd.. Nezvládl by někdo script, který to udělá? Přiznávám, že programovat neumím, tak píšu sem. Díky

    Řešení dotazu:


    Odpovědi

    23.11.2018 11:12 debian+
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Obsahuj adresare medzeru?
    Řešení 1× (Filip Jirsák)
    23.11.2018 11:20 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    cd '/zdrojový/adresář'
    for dir in {A..B}{1..12}; do
      cp "${dir}/assembly.fa" '/cílový/adresář/'"${dir}assembly.fa"
    done
    
    23.11.2018 11:29 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam

    Tohle^^^ tedy samozřejmě předpokládá, že jsou všechny ty adresáře v jednom a tom samém společném adresáři. Tady je jednoduchý ilustrativní příklad / test:

    mkdir nějaký_pokus cíl
    cd nějaký_pokus
    mkdir {A..B}{1..12}
    touch {A..B}{1..12}/assembly.fa
    cd ..
    for dir in {A..B}{1..12}; do
      cp "nějaký_pokus/${dir}/assembly.fa" "cíl/${dir}assembly.fa"
    done
    ls -l cíl
    rm -Rf nějaký_pokus cíl
    
    23.11.2018 11:49 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam

    Pokud ty adresáře můžou být libovolně vnořené v jiných adresářích, tak třeba takto:

    find zdroj -type d -regextype awk -regex '.*[AB](1[0-2]?|[2-9])' \
    | while read dir; do
        cp "${dir}/assembly.fa" "cíl/$(basename "${dir}")assembly.fa"
      done
    

    Opět ukázka s triviálním testem (která sice netestuje hlubší zanoření adresářů, protože jsem extrémně líný, ale mělo by to i s hlubším zanořením fungovat):

    mkdir 'zdroj' 'cíl'
    mkdir 'zdroj/'{A..B}{1..12}
    touch 'zdroj/'{A..B}{1..12}'/assembly.fa'
    find zdroj -type d -regextype awk -regex '.*[AB](1[0-2]?|[2-9])' \
    | while read dir; do
        cp "${dir}/assembly.fa" "cíl/$(basename "${dir}")assembly.fa"
      done
    ls -l 'cíl'
    rm -Rf 'zdroj' 'cíl'
    
    23.11.2018 12:44 Honza
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Perfektní, funguje to. Ušetří mě to případných chyb při otravném ručním přepisování. Díky moc!
    23.11.2018 11:34 debian+
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Skopiruj, prepis do terminalu a na zaciatku prikazu si nastav premenna (dopis do uvodzoviek), ze z kadial (odkial) a kam ma skopirovat. A medzera nesmie byt v nazve KAM a Z (ak by treba, povedz, osetrim). V ich podadresarov moze.
    KAM=""; Z=""; find $Z -name "assembly.fa" -exec echo "cp -v '{}' $KAM/\'\`echo {}|tr / _\`\'" \; |bash
    A u mna "demo" (pouzil som absolutne cesty, mozes pouzit i relativne):
    $ KAM="/tmp/kam"; Z="/tmp/z/"; find $Z -name "assembly.fa" -exec echo "cp -v '{}' $KAM/\'\`echo {}|tr / _\`\'" \; |bash 
    '/tmp/z/b/assembly.fa' -> "/tmp/kam/'_tmp_z_b_assembly.fa'"
    '/tmp/z/a/assembly.fa' -> "/tmp/kam/'_tmp_z_a_assembly.fa'"
    $ 
    23.11.2018 14:03 Honza
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Opet perfektni. Take dekuju.
    Řešení 1× (Filip Jirsák)
    Josef Kufner avatar 23.11.2018 12:08 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Prostě stačí přejmenovat tak, že odstraníš lomítko.
    rename 's/\///' */assembly.fa
    Hello world ! Segmentation fault (core dumped)
    23.11.2018 13:54 Honza
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Script od Andreje jeste chapu, rename 's/\///' */assembly.fa je na me uz hardcore. Ale taky to funguje. Take diky.
    k3dAR avatar 23.11.2018 17:14 k3dAR | skóre: 63
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Jde o sed syntax 's/neco/zaneco/' s je najdi a zamen, / je vychozi oddelovac, protoze chces nahradit / musis ho escapovat znakem \, protoze nechces / nahradit ale odstranit tak "zaneco" nechas prazdne... pro lepsi pochopeni lze zmenit oddelovac na "cokoliv" jineho, treba #, pak by to u tebe bylo 's#/##', muzes si to vyzkouset se sedem:
    echo "nazdar honzo" | sed 's/nazdar/ahoj/'
    Pokud by se meli zmeni vsechny vyskyty na radku, pridas na konec g: 's/neco/zaneco/g'
    porad nemam telo, ale uz mam hlavu... nobody
    23.11.2018 17:47 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam

    To je skript pro sed (stream editor). Úvodní s znamená nahrazení (substitute) a pak následují dva výrazy oddělené (v tomto případě) lomítky, první je regulární výraz a druhý je šablona k nahrazení. Nelze než doporučit manuálové stránky, protože tohle vyžaduje pochopení rour (pipe) a regulárních výrazů.

    Ještě bych doplnil, že pro jednoduché případy umí přesně tohle i samotný shell při expanzi proměnných a není tedy nezbytně potřeba další proces.

    text='aabbcc'
    echo "${text}"          # aabbcc
    echo "${text/b/z}"      # aazbcc
    echo "${text//b/z}"     # aazzcc
    echo "${text/[ac]/z}"   # zabbcc
    echo "${text/%[ac]/z}"  # aabbcz
    echo "${text//[ac]/z}"  # zzbbzz
    

    Význam jednotlivých znaků je popsaný v man bash, kapitola Expansion / Parameter Expansion.

    27.11.2018 08:58 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Pozor. Tohle nemusí fungovat by default. Pro jistotu doporučuji do skriptu na začátek přidat:
    …
    shopt -s extglob
    …
    
    27.11.2018 12:13 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam

    Žádný z mnou uvedených příkladů nevyžaduje extglob, pokud se nepletu. Ten bývá většinou implicitně zapnutý, ale aby ho člověk fakt využil, musel by tam jako pattern zapsat něco z tohoto:

           If  the  extglob  shell option is enabled using the shopt builtin, several
           extended pattern matching operators  are  recognized.   In  the  following
           description, a pattern-list is a list of one or more patterns separated by
           a |.  Composite patterns may be formed using one or more of the  following
           sub-patterns:
    
                  ?(pattern-list)
                         Matches zero or one occurrence of the given patterns
                  *(pattern-list)
                         Matches zero or more occurrences of the given patterns
                  +(pattern-list)
                         Matches one or more occurrences of the given patterns
                  @(pattern-list)
                         Matches one of the given patterns
                  !(pattern-list)
                         Matches anything except one of the given patterns
    
    27.11.2018 13:30 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam
    Dík za upřesnění. Využívám toho docela hodně, a bylo pro mne bylo docela překvapení, když byl ten extglob vypnutý, proto ho ve skriptech pro jistotu zapínám. Typicky toho využívám třeba v situaci, když chci ořezat textový řetězec, pro různé testy, atp.
    23.11.2018 17:27 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: procházení adresářů a kopírování souborů a jejich přejmenování jinam

    On to ale chtěl zkopírovat, zatímco rename všechno přesouvá (jako mv).

    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.