Portál AbcLinuxu, 26. dubna 2024 07:00
#!/bin/bash for file in `find .`; do if [ -f $file ]; then chmod 644 $file fi if [ -d $file ]; then chmod 755 $file fi doneFunguje skvele, az na jednu drobnost. Na vystupu findu se nesmi objevit soubor, ktery ma v ceste nebo nazvu mezeru. Ten je pak forem interpretovan jako nekolik jednotlivych polozek seznamu... Zkousel jsem taky vypsat seznam souboru do souboru:
find . >filelista posleze pouzit:
for file in `cat filelist`; doAle i kdyz jsem soubory s cestou dal do uvozovek nebo mezery vyescapoval (backslashem), chova se to stejne... Jak se tohle resi? Musi se sachovat s $IFS? Divim se, ze jsem na to po tolika letech s Linuxem narazil az ted. Rek bych, ze je to zacatecnickej dotaz, ale nemuzu to najit ani v manu, ani to vygooglovat.
find -type f|xargs chmod 644 find -type d|xargs chmod 755Kdyz uz ten "find" a "xargs" nekdo napsat, tak proc je nevyuzit naplno...
"$file"
-rw-r--r-- 1 jirkas users 0 Dec 26 13:21 bezmezery -rw-r--r-- 1 jirkas users 0 Dec 26 13:21 s mezerouPustim na ne script:
#!/bin/bash for file in `find .`; do echo $file doneA vypise se:
. ./bezmezery ./s mezerouA zadny "$file" (v uvozovkach) na tom nic nezmeni, protoze to blbe vypadne uz z toho foru...
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.