Linux 如果目录模式存在,则测试并执行Bash

Linux 如果目录模式存在,则测试并执行Bash,linux,bash,shell,Linux,Bash,Shell,如何对目录模式的存在进行内联测试 如果存在一个目录模式,那么我想对该模式进行chmod e、 g.我正在努力做到以下几点: [ -d /usr/local/myproject/*/bin ] && chmod +x /usr/local/myproject/*/bin/* 但是这给了我一个错误“-bash:[:太多的参数”。为了从我的答案中获得一些有用的信息,假设你有太多的bin目录,你不能按照yiu H的方式来做 find /usr/local/myproject/ -pat

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

如果存在一个目录模式,那么我想对该模式进行chmod

e、 g.我正在努力做到以下几点:

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

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

为了从我的答案中获得一些有用的信息,假设你有太多的bin目录,你不能按照yiu H的方式来做

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

它不起作用,因为
-d
测试接受一个参数。您似乎传递了多个参数。解决方法是:

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

无需测试:

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

你知道,那更好。我一开始是想“争论太多?找人帮忙!”但是太长了,读不下去了。如果有很多目录匹配,TL;Dr@ Yih是正确的,你应该给他一个饼干。“YIYH消失了吗?找到另一个地方,他们的答案被提出了。我要达到的目标是不犯错误(返回代码1)。如果目录模式不存在。如果该模式不存在,这仍然会引发错误。@Cerin:更新的版本不会。另外,你为什么在意?只需抑制错误。如果是你不喜欢的返回代码,请添加
| | true
我正在另一个我无法完全控制的应用程序中运行此操作,因此不容易修改它以忽略返回代码。