如何chmod提供的路径(BASH)的子目录

时间:2009-10-14 21:04:18

标签: bash permissions chmod

我需要一个脚本,它接受一个目录路径的命令行参数。脚本应该检查参数以确定它是否实际上是一个目录。如果它是目录,则脚本应将位于其中的任何子目录的保护模式更改为600.如果参数不是目录,则应打印出相应的消息。

我有

if [-d $ 1];然后


否则

echo“这不是目录”

网络连接

基本上我不知道该把什么放在空白处。我用chmod搞砸了,但是我的线似乎想改变输入的路径,而不仅仅是子目录。

2 个答案:

答案 0 :(得分:8)

if test -d "$1"; then
    find "$1" -type d -exec chmod 600 '{}' \;
else
    echo "Not a directory: $1" >&2
    exit 1
fi

各种变体可能更快,但取决于古代findxargs以外的功能。

find "$1" -type d -exec chmod 600 '{}' +
find "$1" -type d -print0 | xargs -0r chmod 600

答案 1 :(得分:0)

([ -d "$1" ] && find $1 -type d -mindepth 1 | xargs chmod 600 | true) || echo 'Not a directory'