- Najděte všechny soubory s příponou
.txt
v aktuálním adresáři i jeho podadresářích.
- Vypište soubory v aktuálním adresáři, jejichž velikost je větší, než $1 bajtů.
- Zjistěte kolik existuje v /etc adresářů s názvem délky 3.
find /etc/* -prune -type d -name '???' | wc -l
- Vypište poslední dva řádky z každého obyčejného souboru s příponou .txt, jehož velikost je alespoň 1024 bajtů. Prohledejte celou stromovou strukturu pod aktuálním adresářem.
find . -name "*.txt" -size +1024c -type f -exec tail -n2 '{}' \;
- Přejmenujte všechny soubory v aktuálním adresáři a jeho podadresářích s příponou
.JPG
, .JPEG
a .jpeg
na soubor s příponou .jpg
.
find . -type f -name "*.JPG" -exec sh -c 'mv "$0" "${0%%.JPG}.jpg"' {} \;
find . -type f -name "*.JPEG" -exec sh -c 'mv "$0" "${0%%.JPEG}.jpg"' {} \;
find . -type f -name "*.jpeg" -exec sh -c 'mv "$0" "${0%%.jpeg}.jpg"' {} \;
S tím, co jsme si zatím předvedli ještě neumíme provést hromadná přejmenování výše jen jedním příkazem, ale i to je samozřejmě možné.
- Vypište jména a příjmení všech uživatelů sítě (
getent passwd
),
kteří mají stejné křestní jméno jako vy. Pozn.: Příkaz getent passwd
funguje v labu, ale nejspíš nebude nainstalován na vašem domácím počítači.
Místo něj použijte obsah souboru /etc/passwd
.
getent passwd | cut -d: -f5 | grep "^Jan "
- Vypište jména a příjmení všech uživatelů sítě, jejichž jméno se skládá z alespoň tří slov.
getent passwd | cut -d: -f5 | egrep "[^ ]+ +[^ ]+ +[^ ]+"
- Vypište ze souboru /etc/php/apache2-php5.5/php.ini všechny řádky
kromě těch, které jsou prázdné nebo zakomentované.
cat /etc/php/apache2-php5.6/php.ini | grep '^[^;]'
- Stáhněte si access log Apache příkazem
curl "http://kam.mff.cuni.cz/~stinovlas/materialy/unix/access.log" > access.log
.
- Zjistěte ze souboru access.log, kolik přístupů bylo provedeno pomocí prohlížeče Firefox.
- Zjistěte ze souboru access.log, kolik přístupů bylo provedeno pomocí prohlížeče Firefox ze systému Linux.
< access.log egrep "(Linux.*Firefox|Firefox.*Linux)"
- Zjistěte ze souboru access.log, kolik přístupů bylo provedeno pomocí prohlížeče Firefox z jiného systému, než Linux.
< access.log grep Firefox | grep -v Linux
- Nahraďte v souboru access.log všechny výskyty slova GET slovem NUGET.
sed 's/GET/NUGET/g' access.log
- Zjistěte ze souboru access.log, kolik přístupů bylo provedeno 28. března 2016 mezi 6:00 a 12:00.
egrep "28/Mar/2016:(0[6-9]|1[01]|12:00:00)" access.log | wc -l
- Napište skript, který vypíše informace o všech uživatelích sítě a to ve formátu UID-login-jméno.
getent passwd | cut -d: -f1,5 > login-name
getent passwd | cut -d: -f3 > uid
paste uid login-name | tr "\t:" "-"
Jednodušší řešení pomocí programu
sed
:
getent passwd | cut -d: -f1,3,5 | sed -r 's#(.*):(.*):(.*)#\2-\1-\3#'
- Zjistěte ze souboru access.log všechny dny, ve kterých byl
proveden přístup a vypište je ve formátu DD. Mes YYYY, kde
Mes je trojpísmenné jméno měsíce v angličtině.
< access.log cut -d\ -f4 | cut -d: -f1 | tr -d \[ | tr "/" " " | sed 's# #. #'
- Zjistěte ze souboru access.log, kolik HTTP/1.1 požadavků
provedených metodou POST skončilo neúspěšně (tj. jiným kódem než 200).
grep "HTTP/1.1" access.log | cut -d\" -f3 | grep -v "^ 200" | wc -l
- Vypište všechny řádky souboru, na kterých se nějaké slovo opakuje.
egrep "\b([a-zA-Z]+)\b.*\b\1\b" access.log