Pisete, ze:
$ ls -l **/*.txt
je skoro to iste ako
$ ls -l `find . -type f | fgrep -i .txt`
To skoro je tam dolezite, kedze druhe najde aj subory ako virus.txt.exe
Dalsi problem u druheho su medzery v nazvoch suborov.
Este je tu rozdiel vo vypisovani adresarov, linkov atd s nazvami konciacimi sa na .txt.
Neviem, ci v obidvoch pripadoch problem aj u velmi dlheho argumentu, tj. ked takych suborov bude velmi vela. V tom pripade by som pouzil pre mna intuitivnejsie
find . -iname '*.txt' -exec ls -l {} \;
Ak ide len o vypisanie suborov (vacsina pripadov), tak staci
find . -iname '*.txt'
ktore nevyzaduje pouzitie shopt.
Len ten "-exec" Vam forkne N krat ls napriklad 1000. To uz nie je malickost.
Uvedeny find tiez nie je korektny lebo to by este musel mat '-file' option. Lebo iba ** nahradza adresar. *.txt musi byt subor. A teraz si to znovu porovnajte s 'ls -l **/*.txt'. Ak nepouzijete ** funguje vsetko po starom.