我有一个脚本,service.sh
在以下许多子目录中调用/app/user
/app/user/new1/service.sh
/app/user/new2/new3/service.sh
/app/user/new4/new5/new6/service.sh
我的目标是找到所有这些service.sh
并执行它,它以及stop,start
每个service.sh
脚本的子目录路径和参数都是唯一的。
例如
/app/user/new1/service.sh stop
/app/user/new1/service.sh start
答案1
尝试find
组合-execdir
:
find /app/user/ -type f -name 'service.sh' \
-execdir ./service.sh stop \; \
-execdir ./service.sh start \;
./service.sh start
仅当./service.sh stop
成功时才会执行。
您可以使用如下脚本进行测试,将其复制到目录 A 和 B 中:
是script.sh
:
# !/bin/sh
echo 'executing script in directory' "$PWD"
echo $1
echo
目录树:
.
├── dir_A
│ └── script.sh
└── dir_B
└── script.sh
运行命令:
$ find -type f -name 'script.sh' -execdir ./script.sh stop \; -execdir ./script.sh start \;
executing script in directory /home/αғsнιη/test/dir_A
stop
executing script in directory /home/αғsнιη/test/dir_A
start
executing script in directory /home/αғsнιη/test/dir_B
stop
executing script in directory /home/αғsнιη/test/dir_B
start