2021-04-29

linux下find、grep命令详解

仙道Bob 2019-07-06 13:51:03  5756  收藏 8
分类专栏: Linux 文章标签: find grep
版权
grep命令
格式:grep 参数 要查内容 路径
常用参数: -r:递归  -n:显示行号   -i:忽略大小写  -c:匹配到的行数  -w:全词匹配  -v:显示不包含匹配文本的所有行

递归搜索文件:grep -r "from" ./

aaa@hadoopslave16:~/data/hive/aaa$ grep -r "from" ./
./2.sql: from tmp.tmp_*** where dt between '20190101' and '20190228';
./6.sql: from
./6.sql: from tmp.tmp_***
递归、显示行号、忽略大小写、全词匹配:grep -r -n -i -w 'risk' ./

aaa@hadoopslave16:~/data/hive/aaa$ grep -r -n -i -w 'risk' ./
./2.sql:3:insert overwrite table risk.*** partition(dt)
./6.sql:4:insert overwrite table risk.*** partition(dt)
./4.sql:4:insert overwrite table risk.*** partition(dt)
./8.sql:6:insert overwrite table risk.*** partition(dt)
排除文件或文件夹: --exclude=file  --exclude={file1,file2...}  --exclude-dir= dir  --exclude-dir={dir1,dir2...}

aaa@hadoopslave16:~/data/hive/aaa$ grep -r -n -i -w 'risk' ./ --exclude=2.sql
./6.sql:4:insert overwrite table risk.*** partition(dt)
./4.sql:4:insert overwrite table risk.*** partition(dt)
./8.sql:6:insert overwrite table risk.*** partition(dt)
aaa@hadoopslave16:~/data/hive/aaa$ grep -r -n -i -w 'risk' ./ --exclude={2.sql,4.sql}
./6.sql:4:insert overwrite table risk.*** partition(dt)
./8.sql:6:insert overwrite table risk.*** partition(dt)
 
aaa@hadoopslave16:~/data/hive$ grep -r -n -i -w 'risk' ./ --exclude-dir=bbb
./aaa/2.sql:3:insert overwrite table risk.*** partition(dt)
./aaa/6.sql:4:insert overwrite table risk.*** partition(dt)
./aaa/4.sql:4:insert overwrite table risk.*** partition(dt)
./aaa/8.sql:6:insert overwrite table risk.*** partition(dt)
aaa@hadoopslave16:~/data/hive$ grep -r -n -i -w 'risk' ./ --exclude-dir={bbb,ccc}
./aaa/2.sql:3:insert overwrite table risk.*** partition(dt)
./aaa/6.sql:4:insert overwrite table risk.*** partition(dt)
./aaa/4.sql:4:insert overwrite table risk.*** partition(dt)
./aaa/8.sql:6:insert overwrite table risk.*** partition(dt)
find命令
格式:find 路径 参数 文件名

按文件名查找:
find ./ -name 2.sql
find / -name 2.sql 2>/dev/null
注意:root用户将某些文件目录设置成禁止访问模式,普通用户就没权限用find命令来查这些目录或文件。往往出现“Permission denied”,为避免这种情况,可转移错误提示,把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2 中,2.log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。
参考:https://blog.youkuaiyun.com/ydfok/article/details/1486451 

#按名称查找
aaa@hadoopslave16:~/data/hive$ find ./ -name 2.sql
./aaa/2.sql
./bbbbb/2.sql
 
#有访问限制
aaa@hadoopslave16:~/data/hive$ find / -name 2.sql
find: ‘/boot/grub2’: Permission denied
find: ‘/proc/tty/driver’: Permission denied
find: ‘/proc/1/task/1/fd’: Permission denied
 
#转移访问限制
aaa@hadoopslave16:~/data/hive$ find / -name 2.sql 2>/dev/null
/home/aaa/data/hive/aaa/2.sql
/home/aaa/data/hive/bbbbb/2.sql
按文件特性查找:
find / -size +10000c    #查找出大于10000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
find / -size -1000k     #查找出小于1000KB的文件
find / -amin -10        # 查找在系统中最后10分钟访问的文件(access time)
find / -atime -2        # 查找在系统中最后48小时访问的文件
find / -empty           # 查找在系统中为空的文件或者文件夹
find / -group cat       # 查找在系统中属于 group为cat的文件
find / -mmin -5         # 查找在系统中最后5分钟里修改过的文件(modify time)
find / -mtime -1        #查找在系统中最后24小时里修改过的文件
find / -user fred       #查找在系统中属于fred这个用户的文件

aaa@hadoopslave16:~/data/hive/aaa$ ll
total 180
-rw-rw-r-- 1 aaa aaa  6918 Jul  9 16:15 1.sql
-rw-rw-r-- 1 aaa aaa 15331 Jul  9 16:18 2.sql
-rw-rw-r-- 1 aaa aaa  6284 Jul  9 16:57 3.sql
-rw-rw-r-- 1 aaa aaa 84134 Jul  9 21:17 4.sql
-rw-rw-r-- 1 aaa aaa  6520 Jul  9 20:31 5.sql
-rw-rw-r-- 1 aaa aaa 14861 Jul  9 21:04 6.sql
-rw-rw-r-- 1 aaa aaa  6520 Jul  9 20:54 7.sql
-rw-rw-r-- 1 aaa aaa 24070 Jul  9 22:11 8.sql
-rw-rw-r-- 1 aaa aaa    13 Jul 13 11:58 ads
drwxrwxr-x 2 aaa aaa     6 Jul 13 12:01 jjj
-rw-rw-r-- 1 aaa aaa   853 Jul 11 18:14 loan.csv
 
aaa@hadoopslave16:~/data/hive/aaa$ find ./ -size -1000c
./
./loan.csv
./ads
./jjj
aaa@hadoopslave16:~/data/hive/aaa$ find ./ -size +10000c
./2.sql
./6.sql
./4.sql
./8.sql
aaa@hadoopslave16:~/data/hive/aaa$ find ./ -size +10k
./2.sql
./6.sql
./4.sql
./8.sql
find、grep、xargs组合查找
find ./ -name '*'|xargs grep -i test

aaa@hadoopslave16:~/data/hive$ find ./ -name '*'|xargs grep -r -n -i risk.***
./aaa/6.sql:4:insert overwrite table risk.*** partition(dt)
./aaa/6.sql:4:insert overwrite table risk.*** partition(dt)
./aaa/6.sql:4:insert overwrite table risk.*** partition(dt)
xargs命令是给其他命令传递参数的一个过滤器,常作为组合多个命令的一个工具。它主要用于将标准输入数据转换成命令行参数,xargs能够处理管道或者标准输入并将其转换成特定命令的命令参数。也就是说find的结果经过xargs后,其实将find找出来的文件名逐个作为了grep的参数。grep再在这些文件内容中查找关键字test。
原文链接:https://blog.youkuaiyun.com/jsbylibo/article/details/84837865

Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值