Linux开发笔记:文本处理

引言

在Linux下工作,常常对log信息或者一些文本信息进行简单过滤处理,其中awk,sed,grep是常用的文本信息处理命令。使用这些命令进行处理可以加速开发效率"

文件及目录的管理

查找当前文件夹下文件的个数

find ./ | wc -l
该命令是采用递归统计文件的个数的方式,如果是文件则计数,如果是
文件夹则计数的基础上+ 文件夹中文件的个数。

递归当前目录及子目录删除所有.o文件:

find ./ -name "*.o" -exec rm {} \;

创建符号软连接,删除源,另一个无法使用

ln -s source 新建的名字

带编号的列出文件内容:ls | cat -n
    1  AdjacencyLists.h
    2  AdjacencyMatrix.h
     ......
    34  XFastTrie.h
    35  YFastTrie.h

文本处理

本节将介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是常用的; 我对shell脚本使用的原则是命令单行书写,尽量不要超过2行; 如果有更为复杂的任务需求,还是考虑python吧;
http://linuxtools-rst.readthedocs.io/zh_CN/latest/base/03_text_processing.html?highlight=awk

find 文件查找

查找txt和pdf文件:

find . \( -name "*.txt" -o -name "*.pdf" \) -print

正则方式查找.txt和pdf:

find . -iregex ".*\(\(\.json\)\|\(\.md\)\)$"
-iregex: 忽略大小写的正则。到那时这种方式不太好使,可能是我初学没有掌握其中的奥秘吧。

否定参数 ,查找所有非txt文本:

find . ! -name "*.txt" -print
指定搜索深度,打印出当前目录的文件(深度为1):

find . -maxdepth 1 -type f

定制搜索

按类型搜索
find . -type d -print  ##只列出所有目录
-type f 文件 / l 符号链接 / d 目录

find支持的文件检索类型可以区分普通文件和符号链接、目录等,但是二进制文件和文本文件无法直接通过find的类型区分出来;
file命令可以检查文件具体类型(二进制或文本):
例如:
$file redis-cli # 二进制文件
redis-cli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
$file redis.pid # 文本文件
redis.pid: ASCII text

可以用以下命令组合来实现查找本地目录下的所有二进制文件:

ls -lrt | awk '{print $9}'|xargs file|grep ELF| awk '{print $1}'|tr -d ':'

按时间搜索

-atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)
-mtime 修改时间 (内容被修改)
-ctime 变化时间 (元数据或权限变化)

  • 最近第7天被访问过的所有文件:
    find . -atime 7 -type f -print

  • 最近7天内被访问过的所有文件:
    find . -atime -7 -type f -print

  • 查询7天前被访问过的所有文件:
    find . -atime +7 type f -print

按大小搜索:
  • w字 k M G 寻找大于2k的文件:
    find . -type f -size +2k
  • 按权限查找:
    find . -type f -perm 644 -print //找具有可执行权
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值