如果我有以下文件目录
/home/aero/airplane/case1
/home/aero/airplane/case2
..
/home/aero/airplane/casex (you get the point there could be many cases)
我有一个名为runscript.sh的shell脚本(在所有情况的同一级别)执行一些简单的命令。我不想" cd"手动进入每个目录,然后运行shell脚本。有没有办法在包含名称" case"的所有案例目录上执行shell脚本?通过键入以下行的内容:
runscript.sh /case*
我知道我可以生成另一个可以执行此操作的脚本,但我想知道是否可以使用简单的命令在多个目录上运行脚本?
非常感谢您对此的帮助!
答案 0 :(得分:1)
如果你想在子目录中执行runscript.sh
,你想找到一些避免行的东西
cd case1 && runscript.sh && cd ..
cd case2 && runscript.sh && cd ..
此处,runscript.sh可以返回false,而cd ..
可以将您带到错误的位置
您可以通过在子shell中运行所有内容来避免这种情况
使用由pwd
替换的runscript.sh脚本进行测试。
(cd case1 && pwd)
(cd case2 && pwd)
现在将其包装在一个命令中,找到所有dir以“case”开头。
find case* -maxdepth 0 -type d -exec bash -c 'cd "{}"; pwd' \;
如果您对结果感到满意,请填写您的脚本
find case* -maxdepth 0 -type d -exec bash -c 'cd "{}"; ../runscript.sh' \;
答案 1 :(得分:0)
尝试使用for
循环。在此示例中,您需要从/ home / aero / airplane /运行命令。
for dir in `ls -ad case*`; do runscript.sh $dir/; done
ls -ad case*
:仅列出以“case”开头的目录。