2017-02-11 92 views
2

我有幾個文件,如果vhost-<someport>.conf文件的名稱,我想用文件名$ port vhost-$port.conf替換每個文件中的端口號。通過文件名更改多個文件內容

例如vhost-8081.conf文件將包含行listen 8081vhost-8082.conf文件將包含行listen 8082;等。

vhost-8081.conf 
vhost-8082.conf 
etc.. 

server { 
    listen 8081; 
    } 

server { 
    listen 8082; 
    } 

回答

1

如果您有一個名爲vhost-NUM.conf,那麼你就可以剝去vhost-前綴文件和.conf後綴提取的端口號,然後使用sed -i與就地更換次數listen .*,更新文件:

for file in vhost-*.conf; do 
    num=${file#vhost-} 
    num=${num%.conf} 
    sed -i "s/listen .*/listen $num;/" "$file" 
done 
0

這可能是你想要的:

for file in vhost-*.conf 
    do  num=${file#vhost-} 
    sed -i "s/listen .*/vhost-$num;/" "$file" 
    done 

    cat vhost* 
    server { 
    vhost-8081.conf; 
    } 
    server { 
    vhost-8082.conf;