answered
2014-12-03 13:43:20 +0100
Měl byste to zkusit sám, byť to třeba nebude elegantní nebo stoprocentně správné. Když si necháte poradit hned na začátku, tak se nenaučíte přemýšlet nad algoritmizací problému a až narazíte na jiný problém, zase nebudete vědět, kudy do něj. Když si naproti tomu napíšete svoje řešení, tak si z něj něco odnesete, i když nebude dokonalé (nebo i když bude více či méně chybné). Klidně ho můžete poslat jako otázku k vyhodnocení, nebo i soukromě mailem v rámci konzultace s vaším cvičícím.
Vaše řešení cd /home/courses/BIPS1/public/schedule; ls -l . | awk 'NR>1{print "mv",$9}' | tee puvodni | awk '{print $2}' |sed s/.html/$(date +"-%a-%H%M").html\;/ > novy; printf '#!/bin/bash\n' > script; paste -d" " puvodni novy >> script; chmod u+x script; ./script;
je "ohavné" proto, že:
Jste zvolil krajně nevhodný zdroj dat. Říkali jsme si, že ls
je fajn pro interaktivní práci, ale pro získávání dat, která se mají dále zpracovávat, se nehodí. Pokud chcete získávat metainformace o souborech, tak se podívejte na příkaz stat
, který vám mimo jiné dovolí výstup zformátovat podle vašich potřeb.
Úplně jste zapoměl na možnost použít subshell (např. zpětné apostrofy).
Zrovna tak jste zapoměl na možnosti cyklu (příkaz for
). (Já v první odpovědi taky. :-))
Zkuste si to opravit na hezčí řešení, bude se vám to hodit pro získání praxe s použitými nástroji. Ale mějte na paměti, že řešíte něco jiného, než co po vás chce zadání: V zadání jde o to, že máte hromadu souborů, z nichž některé mají pro vás zajímavý obsah a jiné ne. Vy byste podle obsahu těch souborů měl vybrat ty zajímavé a opět podle obsahu jim přiřadit jména, která jsou více popisná než 1.html
.
Nezáleží to také na tom, jak vyadá obsah těch souborů?
Miro Hrončok ( 2014-12-03 15:34:33 +0100 )edit