2017-02-11 62 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;