全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
楼主: Apian

shell脚本求助

[复制链接]
发表于 2021-4-18 16:15:34 | 显示全部楼层
  1. for i in `find /123/* -type f|grep "\.conf$"|grep -v "abcd"`;do
  2. sed -i "s/wwwrrr/rrrwww/g" $i
  3. done
复制代码


打钱
 楼主| 发表于 2021-4-18 16:31:20 | 显示全部楼层

居然这么巧,跟我写的基本上一样,然而判断并没有起作用,直接全部替换了,哎。。。
发表于 2021-4-18 16:38:24 | 显示全部楼层
Apian 发表于 2021-4-18 16:31
居然这么巧,跟我写的基本上一样,然而判断并没有起作用,直接全部替换了,哎。。。 ...

看看你的文件列表
 楼主| 发表于 2021-4-18 16:40:41 | 显示全部楼层
嗷嗷 发表于 2021-4-18 16:38
看看你的文件列表

我echo看过了,全部列表出来了,判断没有起作用。。。
判断的是文本里面内容,不是文件名。。。
发表于 2021-4-18 16:41:56 | 显示全部楼层
#6
lines -> "$lines"
既然then都写到下一行了,那么if句末就不用分号了,当然加上也可以

#11
你这判断语句是在后缀为.conf的文件里面再过滤出不含'abcd'的文件。。也就是所有文件
 楼主| 发表于 2021-4-18 16:52:32 | 显示全部楼层
dunce 发表于 2021-4-18 16:41
#6
lines -> "$lines"
既然then都写到下一行了,那么if句末就不用分号了,当然加上也可以

大佬来个完整版本看看吧
发表于 2021-4-18 16:53:06 | 显示全部楼层
本帖最后由 嗷嗷 于 2021-4-18 16:54 编辑
Apian 发表于 2021-4-18 16:40
我echo看过了,全部列表出来了,判断没有起作用。。。
判断的是文本里面内容,不是文件名。。。 ...

  1. for i in $(find /123/* -type f | grep "\.conf"); do
  2. if [[ -z "$(cat $i | grep 'abcd')" ]]; then
  3. #echo $i yes
  4. sed -i "s/wwwrrr/rrrwww/g" $i
  5. fi
  6. done
复制代码

点评

+100.01  发表于 2021-4-18 17:11
发表于 2021-4-18 16:58:22 | 显示全部楼层
dunce 发表于 2021-4-18 16:41
#6
lines -> "$lines"
既然then都写到下一行了,那么if句末就不用分号了,当然加上也可以


楼主要的是文件内容不含"abcd"的文件,但如果是按我最初理解的文件名不含"abcd"的话,我觉得我那个逻辑没有问题
发表于 2021-4-18 16:59:05 | 显示全部楼层
楼上正解
简单起见其实直接   for i in *.conf    就行了
(当然如果匹配到目录就会出问题,楼上考虑的比较全面)
发表于 2021-4-18 17:05:46 | 显示全部楼层
嗷嗷 发表于 2021-4-18 16:58
楼主要的是文件内容不含"abcd"的文件,但如果是按我最初理解的文件名不含"abcd"的话,我觉得我那个逻辑没 ...

是的,总之都是几行代码就能解决的问题= =需求实在太简单了,没啥好纠结的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-26 13:56 , Processed in 0.066391 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表