linux下find、grep命令详解

简介: 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.csdn.net/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排除单个目录、多个目录
使用-prune

在当前目录除test外的子目录查询txt文件
find . -path ./test -prune -false -o -name .txt

find . -path ./test -prune -o -name
.txt -print

多个目录搜索
find /test /test11 -name *.txt

排除多个目录,注意()与表达式之间有空格,-o是或意思,dir后面没有/,排除目录包含/dir/
find . ( -path dir1 -o -path dir2 -o -path dir3 ) -prune -false -o -name *.txt

显示find文件权限、最后修改时间(d)、最后访问时间(u)等
find . ( -path dir1 -o -path dir2 -o -path dir3 ) -prune -false -o -name *.txt -exec ls -ld --time-style '+%Y/%m/%d %H:%M:%S' {} \;

显示find文件权限、最后访问时间等,通过awk展示需要的几个
find . ( -path dir1 -o -path dir2 -o -path dir3 ) -prune -false -o -name *.txt -exec ls -lu --time-style '+%Y/%m/%d %H:%M:%S' {} \; | awk '{print $1,$3,$6,$7,$8}' >/tmp/testdate +%Y%m%d.txt

参考:https://www.cnblogs.com/zouhong/p/16139765.html

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。

————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/jsbylibo/article/details/84837865

目录
相关文章
|
30天前
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
111 32
|
29天前
|
监控 Linux
Linux命令大全:echo与tail实现输出重定向。
这样,我们实现了使用echo和tail命令进行输出重定向的目的。在实际应用中,输出重定向技巧可节省时间,提高工作效率。希望本文内容对您了解和掌握Linux系统中echo与tail命令以及输出重定向的操作有所帮助。
99 27
|
25天前
|
消息中间件 Linux Kafka
linux命令使用消费kafka的生产者、消费者
linux命令使用消费kafka的生产者、消费者
110 16
|
1月前
|
缓存 Linux 数据安全/隐私保护
Linux环境下如何通过手动调用drop_caches命令释放内存
总的来说,记录住“drop_caches” 命令并理解其含义,可以让你在日常使用Linux的过程中更加娴熟和自如。
148 23
|
1月前
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
213 12
|
1月前
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
390 16
|
15天前
|
Linux
linux文件重命名命令
本指南介绍Linux文件重命名方法,包括单文件操作的`mv`命令和批量处理的`rename`命令。`mv`可简单更改文件名并保留扩展名,如`mv old_file.txt new_name.txt`;`rename`支持正则表达式,适用于复杂批量操作,如`rename 's/2023/2024/' *.log`。提供实用技巧如大小写转换、数字序列处理等,并提醒覆盖风险与版本差异,建议使用`-n`参数预览效果。
|
15天前
|
安全 Linux 网络安全
Linux wget 常用命令详解
wget 是一款强大的命令行下载工具,支持 HTTP/HTTPS/FTP 协议。本文详细介绍其基础用法、高效下载参数、高级应用场景及参数速查。内容涵盖断点续传(-c)、后台下载(-b)、限速下载(--limit-rate)、递归下载(-r)、整站镜像(-mk)等实用功能,同时提供文件管理、网络优化与安全下载配置方法,助您高效完成各类下载任务。
|
2月前
|
Linux
Linux命令的基本格式解析
总的来说,Linux命令的基本格式就像一个食谱,它可以指导你如何使用你的计算机。通过学习和实践,你可以成为一个真正的“计算机厨师”,创造出各种“美味”的命令。
91 15
|
Linux Go 数据安全/隐私保护
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
156 2