通过shell脚本在动态目录中执行命令

通过shell脚本在动态目录中执行命令

我的主目录是

/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

相关内容