这是我的问题。我有一个包含多个子目录的目录。在每个子目录中,至少有一个脚本sh。
我想做一个顺序执行所有脚本的脚本。
我对linux很新。
感谢您的帮助,
答案 0 :(得分:2)
find . -name "*.sh" -exec {} \;
这是一个shell命令,从它运行的目录开始(由。指定),找到以.sh结尾的文件名,然后执行这些文件(找到的文件在{中替换) })。反斜杠可以防止分号被shell扩展(这里是bash)。
答案 1 :(得分:1)
从顶层目录运行以下命令:
for f in `find . -type f -name \*.sh`; do $f; done
find命令将找到所有.sh文件。 find命令的输出(以空格分隔的脚本路径名列表)成为for命令的输入。 for命令处理每个输入,将每个条目分配给变量f。 " $ f"执行每个脚本。
答案 2 :(得分:1)
尝试使用find
和for
:
for file in `find . -type f -name "*.sh"`; do sh $file; done
使用也可以将其存储在数组中并执行:
array=($(find . -type f -name "*.sh"))
for file in ${array[@]};do sh $file; done