PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shellscript: ändern von file permissions



macolo
18-05-2002, 12:45
hallo

ich bin auf der suche nach einer lösung für das rekursive ändern der dateirechte ganzer directory trees.

ich hab mir das so vorgestellt:



#!/bin/bash

set -x

echo "give directory:"

read dir

find $dir > /var/tempdat


for item in ´cat /var/tempdat´

do

if [ -d $item ]

chmod 770 $dir/$item

else

chmod 660 $dir/$item
fi

done

rm /var/tempdat

echo "done"

exit 0

leider ist die methode bei grösseren dir trees problematisch, weil der speicheraufwand für die tempdat theoretisch die ganze platte füllen kann.

ist es nicht möglich, jeden outputteil von find oder von "echo *" sofort zu prüfen, ob es ein file oder ein directory ist und die rechte sofort zu ändern? so on the fly?

tia

greets

macolo

anda_skoa
18-05-2002, 14:31
Du könntest entwerder zwei finds machen, ein für directories und eins für Files:
find $basedir -type d -exec chmod 770 {} \;
find $basedir -type f -exec chmod 660 {} \;

oder ein kleines Script


#!/bin/bash
if [ -d $1 ]
chmod 770 $1
else
chmod 660 $1
fi


und das rufts du dann beim find auf
find $basedir -exec chmod.sh {} \;

Ciao,
_

macolo
20-05-2002, 14:54
danke, das sind zwei gute lösungen.

ich dachte zwar, man könnte die namen der ordner und files in eine liste einlesen, aber diese "workarounds" reichen völlig aus.

thx!!!

greets

macolo