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