在子目录中查找脚本并沿着路径执行该脚本

在子目录中查找脚本并沿着路径执行该脚本

我有一个脚本,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

相关内容