하위 디렉터리에서 스크립트를 찾아 경로를 따라 실행합니다.

하위 디렉터리에서 스크립트를 찾아 경로를 따라 실행합니다.

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,startservice.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

관련 정보