利用find、grep和xargs批量处理文件及文本

2022-09-19 11:27:31 浏览数 (1)

find命令

find命令的作用是根据文件的名称或者属性查找文件。

语法格式:

find [查找范围] [参数]

参数:
  • -name:按照文件的名字查找文件(可使用通配符*)
  • -iname:按照文件的名字查找文件(忽略大小写)
  • -size:按照文件的大小查询文件
  • :查找大于输入的大小的文件
  • -:查找小于输入的大小的文件
  • 无符号:查找等于输入的大小的文件
  • -mtime:按修改时间去查询
  • n:表示查找n天以前的文件(不加符号默认为 )
  • -n:表示查找n天以内的文件
  • -atime:按照访问时间查找
  • n:表示查找n天以前的文件(不加符号默认为 )
  • -n:表示查找n天以内的文件
  • -ctime:按照属性修改时间查找
  • n:表示查找n天以前的文件(不加符号默认为 )
  • -n:表示查找n天以内的文件
  • -user:按照用户的属主查询
  • -group:按照用户的属组查询
  • -type:按文件的类型查询
  • -prem:按照文件的权限查询
  • -inum:根据index node号码查询
  • -a:并且(可以省略)
  • -o:或者
  • -maxdepth:查询的目录深度(必须放在第一个参数位)
  • -exec:将find处理好的结果交给其他命令继续处理

grep命令

grep命令使linux三剑客之一,作用是根据文本内容过滤文件。

语法格式:

grep [参数] [匹配规则] [操作对象]

参数:
  • -n:过滤文本时显示过滤内容在文件内的行号
  • -A:匹配成功后同时显示匹配行的后n行
  • -B:匹配成功后同时显示匹配行的前n行
  • -C:匹配成功后同时显示匹配行的前后n行
  • -c:只显示匹配成功的行数
  • -o:只显示匹配成功的内容
  • -v:反向过滤
  • -q:静默输出
  • -i:忽略大小写
  • -l:匹配成功后打印文件的名称
  • -R|-r:递归匹配
  • -E:使用拓展正则,等价于egrep

xargs命令

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 擅长将标准输入数据转换成命令行的参数。

xargs可以读取标准输入和管道中的数据,用于弥补有些命令(如echo、kill、rm、mkdir,ls)不能从管道中读取数据的不足;


创建测试文件例子

test0/test0.log和test1/test1.log中分别为11 22 33 三个数字;

查找

查找文本中的11

grep -R "11"

查找文本中的11和33

grep -E "11|33" test0.log

或者

egrep "11|33" test0.log

查找当前路径下.log文件:

find . -name "*.log"

find与grep的配合使用:

查找当前路径下.log文件中包含11的文件:

  • -maxdepth:查询的目录深度;
  • |:管道符,表示将前一个命令的结果交给之后的命令处理;

find . -maxdepth 2 -name *.log | xargs grep "11"

查找当前路径下.log文件中包含11和22的文件:

find . -maxdepth 2 -name *.log | xargs egrep "11|22"

或者

find . -maxdepth 2 -name *.log | xargs grep -E "11|22"

替换

find与sed的配合使用:

替换当前路径下.log文件中的22,替换为55:

find . -maxdepth 2 -name *.log | xargs sed -i 's/22/55/g'

删除

find与rm的配合使用:

使用find查找并删除:

find . -maxdepth 2 -name *.sv | xargs rm

结语

find,grep,sed,xargs等更多功能,可自行查阅。

往期推荐

SoC设计之总线接口

SoC设计之低功耗

Perl在IC中的应用

EDA教程

芯片设计

UVM芯片验证

FPGA系列

vivado进阶

Formal验证

数字C笔试

数字IC面经

优秀IC/FPGA开源项目

综合与时序分析

课程推荐

声明:未经授权,禁止转载

0 人点赞