シェルスクリプトを介して動的ディレクトリでコマンドを実行する

シェルスクリプトを介して動的ディレクトリでコマンドを実行する

私のホームディレクトリは

/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

関連情報