linux 查询命令 批量替换多个文件

查询不包含WHO字符的行数据

^((?!WHO).)*$

shell 字符串分割成数组,并查询当前目录下log结尾文件,统计数量

情景:在日志中查询 出含有【单号 订单商品已发出】这个行的,并输出 单号 及查询总数

a="chn0001,chn0002"

OLD_IFS="$IFS" 
IFS="," 
arr=($a) 
IFS="$OLD_IFS" 
for s in ${arr[@]} 
do 
    echo "$s" 
    grep -rn "$s 订单商品已发出" *log |wc -l
done

echo "success"
arr=($a)用于将字符串$a分割到数组
$arr ${arr[0]} ${arr[1]} ... 分别存储分割后的数组第1 2 ... 项 ,
${arr[@]}存储整个数组。
变量$IFS存储着分隔符,这里我们将其设为逗号 "," 
OLD_IFS用于备份默认的分隔符,使用完后将之恢复默认。

当前目录查找 含义chn0001的文件

grep -rn "chn0001" *
  • : 表示当前目录所有文件,也可以是某个文件名
    -r 是递归查找
    -n 是显示行号
    -R 查找所有文件包含子目录
    -i 忽略大小写

查找出多个文件,循环 sed 替换

替换空格//xx的注释内容 为空格

方式一

for s in `find ./admin/ -type f`
do
    echo "$s"
    sed -i 's#[ |\t]\/\/.*# #g' $s
    #下面这个MAC 使用
    #sed -i "" 's#[ |\t]\/\/.*# #g' $s
    #下面这个命令是 sed 正则替换后,会自动加上win下换行符(^M),这里是 转换为unix 格式
    # 你需要的就使用,不需要的就注释掉
    dos2unix -k -o $s
    #
done

方式二

linux:
find ./admin/ -type f -exec sed -i 's#[ |\t]\/\/.*##g' {} \;
find admin -name "*php" | xargs dos2unix

MAC:
find ./admin/ -type f -exec sed -i "" 's#[ |\t]\/\/.*##g' {} \;
find admin -name "*php" | xargs dos2unix

find查找出指定的文件或文件夹 批量删除

#查找当前目录下,包含子目录,有 .DS_Store  的,批量删除
find ./ -name .DS_Store  |xargs rm -rf

#查找当前目录下,包含子目录,文件名有 php  的,批量删除
find ./ -name "*php"  |xargs rm -rf

https://www.cnblogs.com/FlyFive/p/3640243.html
http://www.jb51.net/article/52491.htm
https://www.cnblogs.com/wangkongming/p/4476933.html

阅读更多

扫码向博主提问

风来了-

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • php
  • java
  • go
  • 架构
  • more
去开通我的Chat快问
版权声明:原创文章欢迎转载,不过要记得加出处哦 https://blog.csdn.net/wljk506/article/details/79222347
文章标签: shell sed find
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭