Directory-Structure

通過 shell 腳本在動態目錄中執行命令

  • December 3, 2016

我的主目錄是

/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,

在該文件夾的每個文件中。

正如評論中發布的那樣,有很多選擇;

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

引用自:https://unix.stackexchange.com/questions/327767