1, Když zadám
ladik@ladik:/$ find $HOME/cvert -type f -iname *[" "ěščřžýáíéóúůďňť]*
/home/ladik/cvert/fotky/BLA ěčříěĚÉÉŘŮW
/home/ladik/cvert/ěčř žř ýěěě
/home/ladik/cvert/žřš ýžř áŠŘŽŘ
ladik@ladik:/$
= najde, co hledám...
Když zadám to samé, ale nacházím se v $HOME a ne v kořenovém adresáři "/", tak
ladik@ladik:~$ find $HOME/cvert -type f -iname *[" "ěščřžýáíéóúůďňť]*
find: paths must precede expression: Condition Zero.desktop
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
ladik@ladik:~$
tak vypíše chybu..ve skriptu jsem to sice vyřešil tak, že před hledáním zadám "cd /", ale i tak by mě zajímalo, proč to..?
2, Ve skriptu v cyklu for..in..do..done se tento příkaz zase chová kapku jinak..normálně vypíše nalezené soubory ve tvaru, v jakém ty soubory jsou..Když to dám do cyklu for, tak...
ladik@ladik:~$ zko
/home/ladik/cvert/fotky/BLA
ěčříěĚÉÉŘŮW
/home/ladik/cvert/ěčř
žř
ýěěě
/home/ladik/cvert/žřš
ýžř
áŠŘŽŘ
ladik@ladik:~$
skript vypadá takhle:
#!/bin/bash
cd /
for i in `find $HOME/cvert -type f -iname *[" "ěščřžýáíéóúůďňť]*`; do
echo $i
done
Oč mi jde je asi jasné, chci vyhledat soubory s diakritikou a následně je přejmenovat...nejdřív ale musím docílit toho, aby mi příkaz find vyhodil na výstup soubory ve správném tvaru. Proč ale v cyklu for ty soubory rozkouskuje po mezerách a na každý řádek vyhodí část názvu souboru?
Když zadám do toho skriptu ještě dvojí uvozovky, takhle
for i in "`find $HOME/cvert -type f -iname *[" "ěščřžýáíéóúůďňť]*`"; do
tak už to sice vypíše název souboru ve správném tvaru, ale zase je to všechno na jednom řádku:
ladik@ladik:~$ zko
/home/ladik/cvert/fotky/BLA ěčříěĚÉÉŘŮW /home/ladik/cvert/ěčř žř ýěěě /home/ladik/cvert/žřš ýžř áŠŘŽŘ
ladik@ladik:~$
jsem z toho jakýsi volako zmatený, věděl by někdo důvod prosím?