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 01:11 | Nová verze

Byla vydána verze 2.0.0 svobodného softwaru HAProxy (The Reliable, High Performance TCP/HTTP Load Balancer; Wikipedie) řešícího vysokou dostupnost, vyvažování zátěže a reverzní proxy. Detailní přehled novinek v příspěvku na blogu společnosti HAProxy Technologies.

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

Na Humble Bundle byla spuštěna akce Humble Book Bundle: Programming by Packt. Za 1 dolar a více lze koupit 5 elektronických knih, za 8 dolarů a více lze koupit 12 elektronických knih a za 15 dolarů a více lze koupit 25 elektronických knih věnovaných programování od nakladatelství Packt.

Ladislav Hagara | Komentářů: 1
včera 22:55 | Bezpečnostní upozornění

Bezpečnostní varování NFLX-2019-001 upozorňuje na bezpečnostní chyby v jádrech Linux a FreeBSD v implementaci TCP zneužitelné k vzdálenému DoS nebo kernel panic. V Linuxu se jedná o chyby pojmenované TCP SACK PANIC aneb CVE-2019-11477, CVE-2019-11478 a CVE-2019-11479. V upstream verzích Linuxu 4.4.182, 4.9.182, 4.14.127, 4.19.52 a 5.1.11 jsou již chyby opraveny.

Ladislav Hagara | Komentářů: 0
včera 17:22 | Pozvánky

Spolek OpenAlt zve příznivce otevřeného přístupu na 165. brněnský sraz, který proběhne v pátek 21. června od 18:00 hodin ve Sport Centru Srbská (Srbská 4). Od 19:00 je pro zájemce zamluveno hřiště na plážový volejbal.

Ladislav Hagara | Komentářů: 2
včera 16:11 | IT novinky

Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává superpočítač Summit. Český superpočítač Salomon klesl na 282. místo. Další přehledy a statistiky na stránkách projektu. V aktuálním žebříčku GREEN500 (GFlops/watts) obsadil superpočítač Summit 3. místo.

Ladislav Hagara | Komentářů: 0
16.6. 16:00 | Nová verze

Byla vydána OpenMandriva Lx 4.0. Nejnovější verze této linuxové distribuce přináší například Linux 5.1.9, KDE Plasma 5.15.5, KDE Frameworks 5.58.0, KDE Applications 19.04.1, Qt Framework 5.12.3, systemd 242, LLVM/clang 8.0.1 a Java 12. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 1
15.6. 16:55 | Bezpečnostní upozornění

V editorech Vim a Neovim byla nalezena a opravena bezpečnostní chyba CVE-2019-12735. Funkce modeline umožňovala při otevření souboru spustit libovolný příkaz. Chyba byla opravena v upstream verzích Vim 8.1.1365 a Neovim 0.3.6.

Ladislav Hagara | Komentářů: 0
14.6. 23:55 | Nová verze

Byla vydána nová stabilní verze 2.9 svobodné decentralizované mikroblogovací platformy a sociální sítě podobné Twitteru Mastodon (Wikipedie). Přináší především jednosloupcový layout. Detailní přehled novinek na GitHubu. Projekt lze podpořit na Patreonu. Aktuálně má přislíbeno 4 761 dolarů měsíčně.

Ladislav Hagara | Komentářů: 0
14.6. 16:11 | Nová verze

Byla vydána první stabilní verze 1.0 decentralizovaného protokolu pro komunikaci v reálném čase Matrix (Wikipedie) a také verze 1.0 jeho referenční implementace Synapse. Současně byla oficiálně představena zastřešující nadace Matrix.org Foundation. Protokol Matrix je využíván například komunikátorem Riot.

Ladislav Hagara | Komentářů: 6
13.6. 13:33 | IT novinky

Microsoft oznámil, že v květnu představený Windows Subsystem for Linux (WSL) ve verzi 2 s jádrem Linux 4.19 je již k dispozici pro uživatele zapojené do programu Windows Insider. Podrobnosti v aktualizované dokumentaci.

Ladislav Hagara | Komentářů: 142
Jakou verzi jádra Linux typicky používáte na osobním počítači?
 (17%)
 (21%)
 (55%)
 (3%)
 (4%)
Celkem 280 hlasů
 Komentářů: 8, poslední 15.6. 18:14
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: 334×
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: 46 | blog: Republic of Mordor | Zürich
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: 46 | blog: Republic of Mordor | Zürich
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: 46 | blog: Republic of Mordor | Zürich
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: 68
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: 54
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: 46 | blog: Republic of Mordor | Zürich
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: 49 | 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: 46 | blog: Republic of Mordor | Zürich
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: 49 | 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: 46 | blog: Republic of Mordor | Zürich
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.