linux查找

查找命令(高级)

查找命令(高级) 1

1. wc 2

2. grep 3

3. 通配符(完全匹配) 4

4. 正则表达式(包含匹配) 6

5. find 7

6. which,whereis 14

7. locate 15

8. 一些查询例子 16

wc

格式

wc 【选项】

wc 文件 分别显示行数 单词数 符号数(回车空格都算) 文件名

选项

-l 显示行数

-L 显示最长行的长度

-w 显示单词

-m 显示字符

-c 字节数

字节数大于等于字符数

linux查找

linux查找

grep

grep过滤内容行(包含选择,查的是字符串)基本格式

grep 【选项】 文件位置

grep 123 abc 查找abc文件中带有123字符的行

选项:

-v取反

例题:查找没有fd的行

grep -v 'fd' a.txt

-i 不区分大小写

-n 输出原始文件行号

grep -n 123 abc

-c 统计行数

linux查找

-w 按照单词查找

-A 本行和下三行

-B 本行和上三行

-C 本行和上下三行

扩展正则需要用egrep(grep -E)

例题:查找有f字母或good单词的行

egrep 'f|good' a.txt

通配符(完全匹配)

一般用于匹配文件名

?匹配任意一个字符

*匹配任意多个字符

^取反

find a[^b]c 查找不能为abc的文件,但是可以“a+任意字符+c”

linux查找

[ ] 匹配括号中任意一个字符

find -name "a[bc]c"

linux查找

{}表示符合括号内包含的多个文件

例:查询‘.log’和“.txt”结尾的文件

ll {*.log,*.txt}

【0-9】【A-Za-z】匹配任意一个括号内的字符范围

find -name "a[b-d]c"

linux查找

正则表达式(包含匹配)

一般用于匹配内容

^ 匹配行首

$ 匹配行尾

grep '[bc]$' abc

. 匹配任意一个字符

* 匹配前一个字符任意次(可能是0次)

【0-9】【A-Za-z】匹配括号中任意一个字符

linux查找

- 匹配范围

【】匹配括号中任意一个字符

grep a[ab]c abc

【^】匹配不是括号中任意一个字符

补充

^[$] 以$为开头的行 ^$ 空行

grep “123*a” abc 代表首先顺序为12什么a,1后面必须是2,2后面可以有0或者多个3(附有图)

linux查找

find

格式

find 查找范围 【条件1】【条件2】...只能查找文件

例:find /root -name abc在根目录下的root文件中寻找abc名字的文件

选项

一般选项

-i忽略大小写

find /root -iname abc

linux查找

选项按照文件属性查找

-name按照名字查找(默认?)

linux查找

-type按照类型查找

格式:find 位置 -type d/f/c/i/p/s
d(directory)目录
f(file)文件
l(link)链接文件
b(block)块设备文件
c(char)字符设备文件
p(pipe)管道文件
s(socket)套接字文件

-size按照文件大小查找

符号
+比指定大

linux查找

-比指定小
=指定的大小?
find的单位
默认不写或者b表示512Byte不推荐
c表示Byte(字节)
k kb
M MB
G GB
w表示2Byte中文字符数查询

-perm按照权限查找

find /root/ -perm 644恰好等于644权限的文件

linux查找

find /root -perm +644三种权限有一个大于所对应就输出
find /root -perm -644 三中权限必须都大于等于所对应就查出

linux查找

linux查找

按照时间搜索

-atime访问时间
-mtime数据修改时间
-ctime状态修改时间
时间规定
-n:n天内修改时间
n:n~n+1天修改
+n:n+1天前修改

linux查找

例子:find /root -mtime -5

-inum按照inode查找文件

linux查找

逻辑运算的使用

-a (或者直接空格)与

find -name abc -a -type f

find -name abc -type f

linux查找

-o 或

find -iname abc -o -perm -777

linux查找

-not(!) 非

find -type f -not -name abc

find -type f ! -name abc

linux查找

find高级用法

find 路径 【选项】 搜索内容 -exec 命令 {} \;

find -type f -name abc -exec ls -l {} \;

find -name bcd -exec rm -rf {} \;

find -name a[bc]c 查找名字为abc和acc的文件(中括号内随意一个字符匹配)

rm -rf $(find /root -name "*.txt") 删除root下的.txt结尾的文件

which,whereis

which查找命令的绝对路径

which可以查出别名(不可查文件)

例:which ll

linux查找

whereis查找二进制文件(帮助文档命令,例如man手册中出现的命令,系统命令路径)

例:whereis ls

linux查找

locate

只能按照文件名来搜索,数据库位置在/var/lib/mlocate/mlocate.db,搜素速度很快

下载mlocate包

yum -y install mlocate

每次建立文件后查找前,先更数据库

updatedb

locate 文件 直接查找

locate aaa.txt

linux查找

linux查找

一些查询例子

延申

find /root -name test.txt | wc -l 查看root下的名字为test.txt 的行数

head -3 a.txt | tail -1 查看a.txt第三行数据

ll -a /etc | less 将设备文件下的长格式信息打印在a.txt中

ip a|grep "ESTABLISHED" |wc -l 统计谁在远程登录我的服务器的人数

find ./ -maxdepth 1 -name '*.txt' ! -name '.*' -exec -rm -rf {} \;删除当前目录下深度为1(不包括其下的子目录)和隐藏目录,名字为.txt结尾的文件

查看当前文件下(不包括隐藏目录)的所有普通文件的行数

find ./ -type f ! -name '.*' | wc -l

ll ./ | grep -c '^-'

ll ./ | grep '^-' |wc -l

发布者:LJH,转发请注明出处:https://www.ljh.cool/35622.html

(0)
上一篇 2023年4月20日 上午1:26
下一篇 2023年4月20日 上午1:41

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注