一般来说,find 是指查找文件,以文件名为依据,当然也可以指目录,而grep是查找字符串,以查找内容为主。当然二者还可以混合使用。
find 格式
find [path] [options] [tests] [actions]
几个简单例子
find . -name test.txt -print
find / -type d test
find . -name "test*"
find /bin /usr/bin -name test
可以看出来,路径可以是绝对路径,也可以是相对路径,同时也可以是多个路径,选项一般使用的比较少,测试就是这里所用的-name, -type 等,action一般是print,默认的就是打印出来,也可以使用其他的ls, -exec 等
更具体的参数:
主要的一些选项如下:
-depth 在查看目录本身以前要先搜索目录中的内容
-follow 跟随符号链接
-maxdepths N 在搜索一个目录时至多搜索N层
-mount(或-xdev) 不要搜索其他的文件系统
主要的一些测试项目如下:
-atime N N天以前访问的文件
-mtime N N天以前修改的文件
-name pattern 除了路径,与指定的类型匹配的文件名.为了保证指定的类型传递给find命令而并不是立即被Shell赋值,指定的类型必须用引号进行引用.用引号的时候,可以用匹配,也就是文件名模糊查找,否则认为是文件名精确查找
-newer otherfile 与otherfile文件相比要新的文件
-type C C类型的文件,而这里的C可以指定的一种类型.最常用的是d代表目录,而f是指普通的文件.对于其他的文件类型,我们可以查看手册页.
-user username 指定的用户所拥有的文件
我们也可以使用运算符进行测试的组合.大多数的有两种格式:短格式和长格式.
! -not 测试的反
-a -and 所有的测试必须为真
-o -or 测试中某一个为真
主要的一些动作为:
-exec command 执行一个命令.这是我们最常执行的动作.
-ok command 与-exec相类似,所不同的只是他会提示用户在执行将要执行的命令之前进行命令的确认.
-print 打印出文件名
-ls 使用ls命令列出当前的文件
-exec和-ok命令会同一行的参数子序列作为他的参数的一部分,直到遇到一个终结符/;序列.对于-exec和-ok来说字符串{}是珍上特殊的类型,而且会为当前文件的绝对路径所替换.
一个例子
find . -newer while2 -type f -exec ls -l {} /;
查找当前路径下,比while2要新的,并且是常规得文件,并按ls -l列出来
注意一个发现,-name 会递归到子目录,如果不想查找子目录,可以限定查找的深度加选项-maxdepths 1表示只在当前目录,不到子目录下找。
但是不知为什么,我测试的-newer只适用于当前目录,不进行子目录查找
grep
grep [options] PATTERN [FILES]
grep 用于查找文件中的字符串,功能非常强大,也可以和find合用,作为-exec得命令
常用例子
grep abc ./* 在当前路径下查找所有文件中含abc字符串的文件,并把行打印出来
选项主要有:
-c 打印出匹配行的总数,而不是打印出匹配的行
-E 打开扩展表达式
-h 禁止将在其中查找到匹配内容的文件名作为输出行的前缀
-i 忽略大小写
-l 列出带用匹配行的文件名,而不是输出实际的匹配行
-v 将匹配类型转换为选择不匹配的行而不是匹配的行
更复杂的匹配就要使用正则表达式
正则表达式中的一些特殊字符
^ 在一行的开头
$ 在一行的结尾
. 任意一个单一字符
[] 方括号中所包含是字母的范围,其中的任何一个都可以进行匹配,例如a-e的字母范围,或者是我们可以使用^来进行反义.
如果我们要将他们作为普通的字符来使用就要在这些字符前面加上/.所以如果我们要查找一个$字符,我们就要使用/$来进行查找.
还有一些扩展的匹配
? 可选的匹配,但是最多匹配一次
* 必须匹配0个或是多个项目
+ 必须匹配1个或是多个项目
{n} 必须匹配n次
{n,} 必须匹配n次或是更多次
{n,m} 匹配范围为n次到m次,包括m次
例子:
grep e$ test.txt
搜索以e结尾的匹配行
grep -E [a-z]/{10/} words2.txt
搜索查找10个字符长的小写字母的单词
更复杂的以后慢慢使用中了解
相关推荐
仿照unix操作系统中的find命令,在实现一个myfind命令。myfind命令从指定的目录下开始,递归地查找指定文件
linux 下 find 命令的用法
运用tasklist和find命令来检测进程是否存在
find命令和xargs命令配合使用,自己总结的,觉得还好
使用find命令查找Linux中的隐藏文件的方法.docx
Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根据不同的条件来查找文件,例如权限、拥有者、修改日期/时间、文件大小等等。在这篇文章中,我们将学习如何使用 find 命令以及它所提供的选项来查找...
帮助您轻松工作及管理你的Linux系统 没什么好说的,想学就下。
find 命令的 7 种用法.doc
find命令可以根据给定的路径和表达式查找的文件或目录。find参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。 find如不加任何参数,表示查找当前...
1、find命令的一般形式为; 2、find命令的参数; 3、find命令选项; 4、使用exec或ok来执行shell命令; 二、find命令的例子; 1、查找当前用户主目录下的所有文件; 2、为了在当前目录中文件属主具有读、写权限,...
Linux下的find命令在目录结构中搜索文件,并执行指定的操作。linux下的find命令提供了相当多的查找条件,功能很强大,由于find的功能很强大,所以他的选项也很多,今天我们来细说一下find命令下的三个时间参数atime,...
linux find 命令大全面linux find 命令大全
linux常用的find命令整理,希望对初学者有帮助!
find命令详解,详细说明了find命令中的每个参数,并带有实例
Linux中Find命令的使用
find命令使用方法,描述了find命令的各種使用方法.
linux find命令说明
find命令是linux下比较常用的命令之一,作用较大。linux find命令精通指南
linux下 find命令实例,txt命令实例
find 命令的一般格式:xargs 命令,find 命令的一般格式:xargs 命令