たとえば、ディレクトリがあります
/path/to/directory
サブディレクトリの権限を設定したいと思います。それは簡単です:
find /path/to/directory -type d -exec chmod something {} +
しかし、どうやって逆にできますか?同じ権限を設定する必要があります。
/path
そして
/path/to
そして
/path/to/directory
私はこのようなディレクトリがたくさんあり、スクリプトソリューションを探しています。
ベストアンサー1
/
各ディレクトリの関数に到達し、呼び出されるまで上方向に繰り返します。
#!/bin/sh
function mangleperms {
echo DEBUG would chmod 755 "$1"
}
function walktoroot {
DIR="$1"
HANDLE="$2"
if [ "$DIR" = "/" ]; then
return
fi
"$HANDLE" "$DIR"
# recursion (noun): see recursion
PARENTDIR=`dirname "$DIR"`
walktoroot "$PARENTDIR" "$HANDLE"
}
if [ -z "$1" ]; then
echo >&2 "Usage: walktoroot dir"
exit 1
fi
# TODO probably more edge cases on relative dirs, though there are means
# to fully qualify those
if [ "$1" = "." ]; then
DIR=`pwd`
else
DIR=$1
fi
walktoroot "$DIR" mangleperms
例えば
$ pwd
/var/tmp/a/b/c
$ /home/jdoe/walktoroot .
DEBUG would chmod 755 /var/tmp/a/b/c
DEBUG would chmod 755 /var/tmp/a/b
DEBUG would chmod 755 /var/tmp/a
DEBUG would chmod 755 /var/tmp
DEBUG would chmod 755 /var
$