#HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.
Společnost Volla Systeme stojící za telefony Volla spustila na Kickstarteru kampaň na podporu tabletu Volla Tablet s Volla OS nebo Ubuntu Touch.
Společnost Boston Dynamics oznámila, že humanoidní hydraulický robot HD Atlas šel do důchodu (YouTube). Nastupuje nová vylepšená elektrická varianta (YouTube).
Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.0.0. Přehled novinek v poznámkách k vydání.
Nejvyšší soud podpořil novináře Českého rozhlasu. Nařídil otevřít spor o uchovávání údajů o komunikaci (data retention). Uvedl, že stát odpovídá za porušení práva EU, pokud neprovede řádnou transpozici příslušné směrnice do vnitrostátního práva.
Minulý týden proběhl u CZ.NIC veřejný test aukcí domén. Včera bylo publikováno vyhodnocení a hlavní výstupy tohoto testu.
Byla vydána nová verze 3.5.0 svobodné implementace protokolu RDP (Remote Desktop Protocol) a RDP klienta FreeRDP. Přehled novinek v ChangeLogu. Opraveno bylo 6 bezpečnostních chyb (CVE-2024-32039, CVE-2024-32040, CVE-2024-32041, CVE-2024-32458, CVE-2024-32459 a CVE-2024-32460).
Google Chrome 124 byl prohlášen za stabilní. Nejnovější stabilní verze 124.0.6367.60 přináší řadu oprav a vylepšení (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 22 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Byla vydána nová verze 9.3 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Novinkou je vlastní repozitář DietPi APT.
Byl vydán Mozilla Firefox 125.0.1, první verze z nové řady 125. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vypíchnout lze podporu kodeku AV1 v Encrypted Media Extensions (EME). Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 125.0.1 je již k dispozici také na Flathubu a Snapcraftu.
Zdravim, mam takovy dotaz. Snazim se vyhledat z jedne slozky soubory a zkopirovat je do jine. A nasledne vypsat rozdil souboru techto slozek za nejaky cas. Chtel jsem pouzit prikaz diff, ale nevim jak presne vyuzit funkci find aby mi zobrazila jen soubory a ne cestu, jelikoz jedna slozka ve ktere to hledam ma x tisic slozek. Dekuji
jak presne vyuzit funkci find aby mi zobrazila jen soubory a ne cestuman find:
Mam za ukol vyhledat v slozce stable soubory obsahujici GPG klice a zkopiruju je do adresare dnesniho data. To udelam prikazem cp -ib `find stable -type f -name "*.gpg"` `date '+%Y-%m-%d-%H-%M'` a ted je problem, ze musim nejspis udelat cyklus protoze jsou zde ve slozce stable soubory ktere maji stejny nazev a ja je nechci prepsat. A chci vypsat ktere ty dva stejne soubory to jsou a kde jsou ulozeny. Tento prikaz to vypise find stable -name "*.gpg" -exec ls -l {} \; ale porad nevim jak presne udelat ten cyklus v kterym by to jelo a podminku abych vypsal jen ty duplikovany.
V tom cyklu jeste kazdy *.gpg soubor importuju do gpg klicenky. To by bylo vse v tom cyklu ktery nevim jak udelat.
Premyslel jsem forem, protoze si spocitam kolik GPG souboru jsem zkopiroval,ale nejsem si jist jak...
A potom porovnat obsah souboru *.gpg ve vytvorene slozce napr. 2009-06-03-20-30 a obsah souboru v nove vytvorene slozce dnesniho data. To bych asi udelal diffem. A rozdil vypsat.
--reply[=HOW] Using `--reply=yes' makes `cp' act as if `yes' were given as a response to every prompt about a destination file. That effectively cancels any preceding `--interactive' or `-i' option. Specify `--reply=no' to make `cp' act as if `no' were given as a response to every prompt about a destination file. Specify `--reply=query' to make `cp' prompt the user about each existing destination file.tj. "--reply=no" nebude nic přepisovat, případně
-u, --update copy only when the SOURCE file is newer than the destination file or when the destination file is missing
find stable -name "*.gpg" > files find stable -name "*.gpg" | while read f; do filename=$(basename "$f") if grep -E ".*/$filename\$" files | grep -v "$f"; then echo "\\$f" fi done
grep -vE "^$f\$"
jedna slozka ve ktere to hledam ma x tisic slozekZ toho mi nic nezhasíná.
find original -name "*.gpg" -printf "%f\t%p\n" | sort -k1,1 -t" " | while IFS=" " read filename fullname; do [[ "$filename" == "$oldfilename" ]] && echo -e "$fullname\n>$oldfullname"; oldfilename="$filename"; oldfullname="$fullname"; done
awk
-om vypise subory s opakujucimi sa menami, kazdy prave raz.
Uvedene riesenie v bash
-i je zjednodusena verzia, vzdy vypise subor a k nemu nazov suboru ku ktoremu sa porovnava - teda ak su tri subory, tak celkovo vypise styri nazvy (v tvare druhy >prvy treti >prvy
).
oldfullname=""; find original -name "*.gpg" -printf "%f\t%p\n" | sort -k1,1 -t" " | while IFS=" " read filename fullname; do if [[ "$filename" == "$oldfilename" ]]; then echo -e "$oldfullname$fullname"; oldfullname=""; else oldfullname="$fullname\n"; fi; oldfilename="$filename"; done
oldfilename=""
, aby tam nahodou niekto nedal nazov prveho suboru
a to IFS=" "
by mohlo byt pred while
, aby sa nemuselo nastavovat pre kazdy riadok, nie?
oldfilename="" oldfullname="" find original -name "*.gpg" -printf "%f/%p\0" | sort -k1,1 -t/ -z | xargs -n 1 --null echo | while IFS=/ read filename fullname; do if [[ "$filename" == "$oldfilename" ]]; then echo -e "$oldfullname$fullname"; oldfullname="" else oldfullname="$fullname\n" fi oldfilename="$filename" done
read
em :( Dneska nemám den :)
find | read
nějak řešit soubory s \n
v názvu. Připadá mi, že ne, ale zase přepisovat každý podobný problém do perlu jen aby byl obecně se mi také nelíbí :(
read
ma prepinac na zmenu delimitera. Akurat treba dat pozor, ze znak null znamena aj koniec riadku v bash-i, tak sa musi tam zapisat $
find ... -print0 | while read -d $'\0' file; do echo "---$file---"; done
-r
, kvoli spatnemu lomitku v nazvoch ... snad uz ten read zoberie vsetko mozne
oldfilename="" oldfullname="" find original -name "*.gpg" -printf "%f/%p\0" | sort -k1,1 -t/ -z | while read -d $'\0' line; do filename=${line%%/*} fullname=${line#*/} if [[ "$filename" == "$oldfilename" ]]; then echo -e "$oldfullname\"$fullname\""; oldfullname="" else oldfullname="\"$fullname\"\n" fi oldfilename="$filename" done
Riesenie v O(NlogN) pomocou sort a awk-u fungujuce ak v nazvoch suborov nie je tabulator ani znak konca riadku
find -name "*.gpg" -printf "%f\t%p\n"|sort -k1,1 -t" "|awk 'NR == 1{fn=$1;f=$2;b=0} NR>1 {if ($1 == fn) {if (b == 0) {print f};print $2; b=0} else {b=0};fn=$1;f=$2}'
Pozn: v prikaze sort za prepinacom -t je zadany tabulator v uvodzovkach ( CTRL-V
, TAB
)
Tiskni Sdílej: