Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.
Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.
GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.
Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.
Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.
find a exec cp, ale nevím jak tam dostat ten nadřazený adresář.data/a/dokumentace data/b/dokumentace data/e/dokumentace data/k/dokumentacezkopírovat do cíle:
cíl/a/dokumentace cíl/b/dokumentace cíl/e/dokumentace cíl/k/dokumentaceMožná jsem hledal špatně, ale na podobný požadavek jsem dotaz nikde nezahlédl.Díky.
Řešení dotazu:
cd data
for dir in * ;
do
if [ -d $dir ] && [ -d ${dir}/dokumentace ]
then
# vlastni kopirovani dat
mkdir -p ../cil/${dir}/dokumentace
cp ${dir}/* ../cil/${dir}
cp ${dir}/dokumentace/* ../cil/${dir}/dokumentace
fi
done
cp ${dir}/dokumentace/* ../cil/${dir}/dokumentaceJestli jsou pod tim adresarem 'dokumentace' jeste dalsi podadresare, tak lze pochopitelne pouzit:
cp -r ${dir}/dokumentace ../cil/${dir}/dokumentace
find a scriptik co to zavolá by to určitě šlo lehce.
cd /cesta/k/data
find . -maxdepth 2 -type d -regex ".*/dokumentace$" -exec mkdir -p "/cesta/k/cil/{}" \;
find . -maxdepth 2 -type d -regex ".*/dokumentace$" -exec cp -r "{}" "/cesta/k/cil/{}" \;
cd /cesta/k/data
find . -maxdepth 2 -type d -regex "\.\/.*/dokumentace$" -exec mkdir -p "/home/imega/cil/{}" \;
find . -maxdepth 2 -type d -regex "\.\/.*/dokumentace$" -exec cp -r "{}/../" "/home/imega/cil/{}/../" \;
Osobně bych to realizoval přes find, který by přes -exec volal skript, kde by se akce realizovaly.
/home/imega má být /cesta/k – aspoň je vidět, že jsem si to i zkusil :)
Ja to delam takhle:
mkdir testovaci_adresar/data
cd testovaci_adresar/data
mkdir -p a/dok; touch a/soub1 a/dok/soub2
touch b
mkdir c; touch c/soub3
mkdir -p d/dok ; touch d/soub4 d/dok/soub5
touch e
Tim jsem si vytvoril smes souboru a adresaru ruznych urovni a na nich si pak delam pokusy
A pointa?Nebudes davat do verejnych diskuzi jedno platne prihlasovaci jmeno na tvuj system. To je takova zakladni ochrana proti crackerum, kteri se chteji probourat na tvuj system.
$ find . -type d -name 'dokumentace' -printf '%h\n' |xargs -i cp -a {} cil
cp /data/a{./dokumentace} cil/a, tak se nehneme z mista.
cp /data/a{./dokumentace} cil/aSakra, zase preklep
Ma byt carka misto tecky ve slozenych zavorkach.
cp /data/a{,/dokumentace} cil/a
Ještě doplním pár věcí, ale ty nejsou předmětem dotazu. Moc dík za pomoc.
-r"
Jen jeste v takovem pripade muzes nahradit to mkdir -p ../cil/${dir}/dokumentace jenom mkdir ../cil/$dir
Moc dík za pomocNeni zac.
3. kopiruje i jine podadresare nez jenon "dokumentace" (coz tazatel zrejme chtel)Ma byt samozrejme "NEchtel".
Zadání není jednoznačné, takže se lze jen domnívat co tazatel přesně chtěl.
kopiruje data/X/ do cil/ (tedy ne do cil/X)
Kopíruje data/X do cil, tj. v adresáři cíl bude podadresář X čili kopíruje data/X/ do cil/X, vyzkoušej si co dělá:
$ cp -a data/X cil
kopiruje i jine podadresare nez jenon "dokumentace"
Tak kopírujte jen podadresář dokumentace:
$ find . -type d -name 'dokumentace' |xargs -i rsync -aR {} cil
najde i jine adresare 'dokumentace' nez pouze v druhe urovni
Tak si specifikujte v jaké úrovni budete adresář dokumentace zpracovávat:
$ find . -mindepth 3 -maxdepth 3 -type d -name 'dokumentace' |xargs -i rsync -aR {} cil
Ještě nějaká nejasnost?
Kopíruje data/X do cil, tj. v adresáři cíl bude podadresář X čili kopíruje data/X/ do cil/X, vyzkoušej si co dělá:Ano, popletl jsem to. Pomotal jsem
cp -r data/x cila
cp -r data/x/* cil
Pochopil jsem to dobre?
~/zkouska$ find . ./bleble ./bleble/dokumentace ./bleble/dokumentace/zkouska ./blabla ./bloblo ./bloblo/bubu ./bloblo/dokumentace ./bloblo/dokumentace/zkouska ~/zkouska$ cp --parents */dokumentace/* ../zkouska1/ ~/zkouska$ find ../zkouska1/ ../zkouska1/ ../zkouska1/bleble ../zkouska1/bleble/dokumentace ../zkouska1/bleble/dokumentace/zkouska ../zkouska1/bloblo ../zkouska1/bloblo/dokumentace ../zkouska1/bloblo/dokumentace/zkouskaMarek
" ./zkouska/bleble se nezkopiruji do ../zkouska1/bleble."
A ma se kopirovat, nebo ne?
Toto
cp -r --parents */dokumentace/* ../zkouska1/
podle mne dela:
Pokud existuje adresar dokumentace ve druhe urovni, tak ho zkopiruji i s nadrizenym adresarem rekurzivne do ./zkouska1/
MarekA ma se kopirovat, nebo ne?Myslim, ze tazatel se vyjadril, ze ma. Zkousel jsi, co ten tvuj 'cp' kopiruje? Protoze ja to zkousel a nekopiruje tu prvni uroven. Vytvor si soubor v zkouska/bleble (napr. takhle:
touch ./zkouska/bleble/abc), spust na to ten tvuj cp a podivej se, co mas v zkouska1/bleble. Soubor 'abc' to rozhodne nebude
To stejne plati pro soubory (i adresare) v ./zkouska/bleble/dokumentace/zkouska
DIR="./zkouska/bleble/dokumentace/zkouska"
touch ${DIR}/def
mkdir ${DIR}/podadr
touch ${DIR}/podadr/ghi
^^ Ani jeden z nich se nezkopiruje.
Co tedy delam spatne, ze si myslym, ze mne to funguje?
~/zkouska$ DIR="./bleble/dokumentace/zkouska"
~/zkouska$ mkdir ./bleble/dokumentace/zkouska
~/zkouska$ touch ${DIR}/def
~/zkouska$ mkdir ${DIR}/podadr
~/zkouska$ touch ${DIR}/podadr/ghi
~/zkouska$ find
.
./bleble
./bleble/dokumentace
./bleble/dokumentace/zkouska
./bleble/dokumentace/zkouska/podadr
./bleble/dokumentace/zkouska/podadr/ghi
./bleble/dokumentace/zkouska/def
./blabla
./bloblo
./bloblo/bubu
./bloblo/dokumentace
./bloblo/dokumentace/dir
./bloblo/dokumentace/dir/file
./bloblo/dokumentace/zkouska
~/zkouska$ mkdir ../zkouska1
~/zkouska$ cp -r --parents */dokumentace/* ../zkouska1/
~/zkouska$ find ../zkouska1
../zkouska1
../zkouska1/bleble
../zkouska1/bleble/dokumentace
../zkouska1/bleble/dokumentace/zkouska
../zkouska1/bleble/dokumentace/zkouska/podadr
../zkouska1/bleble/dokumentace/zkouska/podadr/ghi
../zkouska1/bleble/dokumentace/zkouska/def
../zkouska1/bloblo
../zkouska1/bloblo/dokumentace
../zkouska1/bloblo/dokumentace/dir
../zkouska1/bloblo/dokumentace/dir/file
../zkouska1/bloblo/dokumentace/zkouska
Marek
Co tedy delam spatne, ze si myslim, ze mne to funguje?Zapomnel jsi si vytvorit ten soubor v ./bleble jak jsem psal (touch ./bleble/abc) Jinak se omlouvam, ze jsem nepostrehl to pridani prepinace "-r" do "cp". Tim se resi to kopirovani adresarove struktury pod 'dokumentace'.
Tiskni
Sdílej: