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