find 命令
语法:find 搜索路径 匹配表达式
功能:该命令用于在指定路径中查找符合条件的文件,搜索路径可以是多个目录,不同目录之间以空格分隔。
匹配表达式1
1.-name filename:
要查找的文件名。可以使用通配符“*”,“?”,但要用双引号将文件名引起来。
例:
1 2 3 4 5 6 7 8
| find -name "h*" -print #在当前目录下查找以h开头的文件
find . -name "*.java" #查找当前目录下所有扩展名为java的文件
find / -name hosts -print #在整个文件系统中查找名为hosts的文件
|
2.-user username:
查找属于username用户的文件。
例:
1 2
| find /home -user user1 -print #找出/home下属于用户user1的所有文件
|
3.-group groupname:
查找属于groupname组的文件。
NOTE:
-print:显示找到文件路径名。
匹配表达式2
1.-exec 命令 {}:
对找到的匹配文件,执行所列出的命令,而不询问用户是否执行这些命令,参数{} 由find找到当前的文件路径名取代,命令行末尾必须有“;”。
例:
1 2 3 4 5
| find /home –user user1 –exec cat {}\;|more #找出/home下属于用户user1的所有文件并显示其内容
find /home –user user1 –exec rm –r {} \; #找出/home下属于用户user1的所有文件并删除
|
2.-ok 命令 {}:
与-exec的用法相同,在执行命令之前询问用户是否要执行命令。
匹配表达式3
1.-atime n:查找前n天访问过的文件(仅第n天这一天)。
2.-atime +n:查找前n天之前访问过的文件;-n则表示前n天之后。
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| find /home –atime +365 –print #找出用户一年前访问过的文件
find $home –user user1 –atime +3 –exec rm –r {} \; #找出用户user1主目录下属于自己的前3天之前访问过文件并删除
find / -amin -10 #查找在系统中最后10分钟访问的文件(access time)
find / -atime -2 #查找在系统中最后48小时访问的文件
find / -mmin -5 #查找在系统中最后5分钟里修改过的文件(modify time)
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
|
匹配表达式4
1.-type filetype:
指定查找的文件类型。
filetype 可以是:b块文件;c字符设备文件;d目录文件;f一般文件。
例:
1 2 3 4 5
| find –type d –print #查找当前目录下的所有的子目录
find –type f –print #查找当前目录下的所有的普通文件
|
匹配表达式5
-size 按照文件大小进行查找。
(c:字节,w:双字,k:KB,M:MB,G:GB)
- -size Number Number大小以块(一般是512字节)为单位,找对应大小的文件
- -size Numberc Numberc大小以字节为单位,找对应大小的文件
- -size -Numberc 查找比该值小的文件
- -size +Numberc 查找比该值大的文件
例:
1 2 3 4 5 6 7 8
| find –size -10 –print #查找当前目录下所有长度小于10块的文件
find –size -10c –print | ls –l #查找当前目录下所有长度小于10字节的文件并以长格式显示文件信息
find –size +100 –size -200 –exec ls –s {} \; #在当前目录下查找100~200块长的文件并显示文件的实际块数
|
其他/混合使用
1 2
| find / -empty # 查找在系统中为空的文件或者文件夹
|
混合使用:
参数有: !,-and(-a),-or(-o)。
1 2 3 4 5 6 7 8
| find /tmp -size +10000c -and -mtime +2 #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
find / -user fred -or -user george #在/目录下查找用户是fred或者george的文件文件
find /tmp ! -user panda #在/tmp目录中查找所有不属于panda用户的文件
|
grep 命令
语法:grep【参数】 查找模式 文件名 【文件名】
功能:grep命令用于在指定文件中查找与模式匹配的行,并将匹配的行显示在标准输出上。如果没有指定文件,则从标准输入中读取。当在多个文件中进行查找中,将在每一行输出之前加上文件名。在搜索的文件名中允许使用通配符。
主要参数:
- -c:只输出匹配行的计数。
- -i:不区分大小写
- -h:查询多文件时不显示文件名。
- -l:查询多文件时只输出包含匹配字符的文件名。
- -n:显示匹配行及行号。
- -s:不显示不存在或无匹配文本的错误信息。
- -v:显示不包含匹配文本的所有行。
- -f: filename:从指定文件中获取搜索模式,每行一个搜索模式项。
pattern正则表达式主要参数:
1 2 3 4 5 6 7 8 9
| \: 忽略正则表达式中特殊字符的原有含义。 ^:匹配正则表达式的开始行。 $: 匹配正则表达式的结束行。 \<:从匹配正则表达 式的行开始。 \>:到匹配正则表达式的行结束。 [ ]:单个字符,如[A]即A符合要求 。 [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。 .:所有的单个字符。 * :有字符,长度可以为0。
|
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| grep 'test' d* #显示所有以d开头的文件中包含 test的行
grep ‘test’ aa bb cc #显示在aa,bb,cc文件中包含test的行
grep ‘[a-z]\{5\}’ aa #显示所有包含每行字符串至少有5个连续小写字符的字符串的行
grep magic /usr/src #显示/usr/src目录下的文件(不含子目录)包含magic的行
grep -r magic /usr/src #显示/usr/src目录下的文件(包含子目录)包含magic的行
grep -w pattern files #只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’)
grep printf *.c #在当前目录下的所有C文件中查找printf字符串
grep user1 /ect/password #将系统帐号中文件包含user1的行显示出来。
默认情况下,’grep’只搜索当前目录。如果 此目录下有许多子目录,’grep’会以如下形式列出: grep: sound: Is a directory 这可能会使’grep’ 的输出难于阅读。这里有两种解决的办法: 明确要求搜索子目录:grep -r 或忽略子目录:grep -d skip 如果有很多 输出时,可以通过管道将其转到’less’上阅读: grep magic /usr/src/Linux/Documentation/* | less 这样就可以更方便地阅读。
|
find与grep命令组合使用
find与grep命令组合使用,在大量文件中查找非常方便,如:
1 2 3 4 5
| find . -name "*.c" | xargs grep "hello" #在当前目录所有.c文件查找包含hello字符串的文件
find -name "*.c" | grep -s gt9xx #查找路径下带某个文件夹或者文件名的文件
|
本文标题:linux查找命令
文章作者:Mr Bluyee
发布时间:2018-11-15
最后更新:2019-07-15
原始链接:https://www.mrbluyee.com/2018/11/15/linux%E6%9F%A5%E6%89%BE%E5%91%BD%E4%BB%A4/
版权声明:The author owns the copyright, please indicate the source reproduced.