Execute o comando em diretórios dinâmicos via shell script

0

Meu diretório principal é

/home/hts/.hts/tvheadend/input/dvb/networks/1d38df81855dee2d39e692ecc4caf05c/muxes

Existem muitos mais diretórios com nomes gerados por radomial

Exemplo:

/027941cc4936a3a3515c78487abc5445/  
/4ab4097f4089f9e6d3c062a96f027707/  
/8224af212d24d291570864021d9107a3/  
/bffd49d7d6af0f6405b1dba81df70d89/

Novamente nessas pastas há um arquivo (chamado "config") e uma subpasta (chamada "services"). Na subpasta "serviços" existem arquivos com um nome gerado radomicamente.

Exemplo:

/home/hts/.hts/tvheadend/input/dvb/networks/1d38df81855dee2d39e692ecc4caf05c/muxes/027941cc4936a3a3515c78487abc5445/services/02f1f0807a9228c6543425c4f47312e0

Eu quero um script simples que insira todas as pastas em "muxes" e para cada uma dessas pastas entre na subpasta "services" e substitua o termo

"enabled": true,

através de

"enabled": false,

em todos os arquivos dessa pasta.

    
por Daniel 03.12.2016 / 14:42

1 resposta

1

como foi postado nos comentários tantas opções;

#!/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

ou

#!/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
    
por 03.12.2016 / 23:02