我的主目录是
/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