![쉘 스크립트를 통해 동적 디렉토리에서 명령 실행](https://linux55.com/image/100133/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EB%8F%99%EC%A0%81%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%97%90%EC%84%9C%20%EB%AA%85%EB%A0%B9%20%EC%8B%A4%ED%96%89.png)
내 홈 디렉토리는
/home/hts/.hts/tvheadend/input/dvb/networks/1d38df81855dee2d39e692ecc4caf05c/muxes
무작위로 생성된 이름을 가진 더 많은 디렉터리가 있습니다.
예:
/027941cc4936a3a3515c78487abc5445/
/4ab4097f4089f9e6d3c062a96f027707/
/8224af212d24d291570864021d9107a3/
/bffd49d7d6af0f6405b1dba81df70d89/
이 폴더에는 파일("config"라는 이름)과 하위 폴더("services"라는 이름)도 있습니다. 하위 폴더 "services"에는 무작위로 생성된 이름을 가진 일부 파일이 있습니다.
예:
/home/hts/.hts/tvheadend/input/dvb/networks/1d38df81855dee2d39e692ecc4caf05c/muxes/027941cc4936a3a3515c78487abc5445/services/02f1f0807a9228c6543425c4f47312e0
"muxes" 아래의 각 폴더를 입력하고 각 폴더에 대해 하위 폴더 "services"를 입력하고 용어를 바꾸는 간단한 스크립트를 원합니다.
"enabled": true,
통과하다
"enabled": false,
해당 폴더의 모든 파일에.
답변1
댓글에 게시된 것처럼 다양한 옵션이 있습니다.
#!/bin/bash
find /home/hts/.hts/tvheadend/input/dvb/networks/1d38df81855dee2d39e692ecc4caf05c/muxes -maxdepth 1 -type d | while read ad; do
find "$ad/config/services/" -type f -exec sed -i 's/"enabled": true,/"enabled": true,/' '{}' \;
done
또는
#!/bin/bash
dirarr=($(find /home/hts/.hts/tvheadend/input/dvb/networks/1d38df81855dee2d39e692ecc4caf05c/muxes -maxdepth 1 -type d))
for dir in ${dirarr[@]}; do
editfile=$(ls -1 $dir/config/services/)
sed -i 's/"enabled": true,/"enabled": false,/' $editfile
done