Bash测试并在目录模式存在时执行

时间:2011-11-09 15:32:09

标签: linux bash shell

如何对目录模式的存在进行内联测试?

如果存在目录模式,那么我想chmod该模式。

e.g。我正在尝试执行以下操作:

[ -d /usr/local/myproject/*/bin ] && chmod +x /usr/local/myproject/*/bin/*

但是这给了我错误“-bash:[:太多的参数”。

3 个答案:

答案 0 :(得分:5)

没有必要测试:

chmod +x /usr/local/myproject/*/bin/* 2>/dev/null

答案 1 :(得分:2)

它不起作用,因为-d测试需要一个参数。你似乎传递了不止一个。修复将是:

for dir in /usr/local/myproject/*/bin; do
    [[ -d $dir ]] && chmod +x $dir/*
done

答案 2 :(得分:1)

为了从我的答案中挽救一些有用的东西,假设你有太多的bin目录,你不能这样做yi_H的方式。

find /usr/local/myproject/ -path '/usr/local/myproject/*/bin' -maxdepth 2 -type d -exec chmod a+x {} + 2>/dev/null