CentOS 下怎么批量修改 /var/XX/A.conf 文件中的内容,XX 是可变文件夹,要修改的配置文件 A.conf 是固定名称,要求对 A 中的多个变量值进行修改或追加变量,小弟有点 python 基础
![]() | 1 no1xsyzy 2019-09-27 09:15:41 +08:00 一般不是写作 /var/*/A.conf 或者 /var/**/A.conf 么? 因此,看得出你没有 Unix 基础。 另外,准备用 python 了还不简单?我还以为你想用 awk/sed 呢 |
2 guxingke 2019-09-27 09:15:43 +08:00 via Android 有锤子 有钉子 锤就是了 |
3 mikeguan 2019-09-27 09:16:38 +08:00 via Android 1.用*通配目录,sed 直接修改文件 2.目录太多的话,可以先 find 然后 sed 进行修改 3.用 Python 遍历目录读文件修改应该也行 |
![]() | 4 loading 2019-09-27 09:16:39 +08:00 walk 一遍目录,判断文件名就行,都 python 了。 |
5 lihongjie0209 2019-09-27 09:18:26 +08:00 find | sed |
6 XSG 2019-09-27 09:24:35 +08:00 ``` sed -i 's/aaa/bbb/g' `find /var/ -name A.conf` ``` |
7 solopython OP @no1xsyzy XX 是有固定前缀的一些文件夹,不是所有的文件夹 |
![]() | 8 Techzero 2019-09-27 09:30:48 +08:00 via Android @solopython 那就 /var/XX*/ 呗 |
![]() | 9 no1xsyzy 2019-09-27 10:41:21 +08:00 有这提问题的时间( 1.5 小时)代码已经写好了 |
10 MyPassWordis 2019-09-27 10:44:23 +08:00 @XSG #6 pipline 和 subshell 哪个好点?一直习惯用管道,还真不怎么这么写 |
11 solopython OP @loading 怎么替换文件中指定的变量名及其值? |
12 solopython OP @no1xsyzy 知道啥叫抛砖引玉吗 |
![]() | 13 henices 2019-09-27 14:22:47 +08:00 用 perl 吧, 不要忘记这个老东西。 |
![]() | 14 no1xsyzy 2019-09-27 14:54:07 +08:00 ![]() |
![]() | 15 neroxps 2019-09-27 15:26:31 +08:00 楼主的意思是还需要解析每一个 conf 文件? 这样就上 python 或者 bash 就是了,两大运维工具想咋搞都行 |
![]() | 16 blackeeper 2019-09-27 15:31:12 +08:00 懂 shell,那么 find | xargs | sed 搞定 懂 python,work 遍历一遍就可以了 |
![]() | 17 loading 2019-09-27 15:56:13 +08:00 via Android @solopython 正则表达式 |
18 solopython OP 不出力,还屁话多,鄙视你 |
19 solopython OP ![]() @loading @blackeeper walk 搞定,3Q import os import re list=[] for root,dirs,files in os.walk("/var/",topdown=False): for name in files: if name.startswith("A.conf"): list.append(os.path.join(root,name)) for a in list: with open(a,'r+') as f: data = f.read() f.seek(0) f.write(re.sub(r"model(.*)","model=4",data)) f.truncate() |
![]() | 20 TimePPT PRO 如果用 Python3,可以试试 pathlib,比 os.path 好使很多 |
21 bobylive 2019-09-27 16:57:20 +08:00 |
![]() | 22 TimePPT PRO ![]() |
![]() | 23 Foreverdxa 2019-09-27 19:51:04 +08:00 我至少可以用 4 中语言给你实现 |
24 Neveroldmilk 2019-09-28 09:51:15 +08:00 用 shell 命令,别用 python。 |
![]() | 25 realpg PRO @solopython #12 你这不叫抛砖引玉 叫懒 |