Bash在所有目录中获取具有名称的特定文件并运行脚本

时间:2016-05-31 16:01:44

标签: bash

这是我的方案,我有一个名为A的根文件夹,其中包含具有n种可能性的文件夹B,C,D。这些文件夹中的每一个都有一个bash脚本。如何获取这些bash脚本并使用bash脚本运行它们。

sex = F

2 个答案:

答案 0 :(得分:5)

使用find:

find . -name *.sh -type f -exec bash -c '[[ -x {} ]] || chmod u+x {}; {}' \;

找到的每个*.sh

  • 检查文件是否具有执行权限
  • 如果没有为用户设置执行权限
  • 执行脚本

答案 1 :(得分:3)

简单:)

eval "$(ls A/*/run.sh)"

ls将返回包含脚本路径的文件列表。 (你也可以使用find)

&#34>&​​#34; "在$()周围将确保结果保持新行

eval将作为脚本执行返回的行。

请注意,如果脚本名称中有空格,这可能是一个脆弱的解决方案。但如果它看起来像你所展示的那样,那应该可以正常工作。

这是一个例子的输出:

 ~/ eval "$(ls */run.sh)"
 I am running and my name is: one/run.sh
 I am running and my name is: two/run.sh

run.sh脚本是:

 echo "I am running and my name is: $0"