サブディレクトリからルートディレクトリに移動するには?

サブディレクトリからルートディレクトリに移動するには?

たとえば、ディレクトリがあります

/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
$ 

おすすめ記事