在cmd窗口中敲下find /? 这条命令,然后重重地按下回车键。find /? 的执行结果很快,帮助信息全出来了。
find命令详解
find命令的基本格式是这样的:find "要查找的字符串" 要查找的文件,在这里,"要查找的字符串"这个内容是必不可少的,引号也是必须的。例如:find "bathome" d:\test.txt,表示在D盘根目录下的文本文件test.txt中查找含有 bathome 这一字符串的所有行。
find的结果将会有两种情况:
1、当文件中包含要查找的字符串时,将返回这个字符串所在位置的整行内容,具体格式为:第一行是"---------- ×××" (×××表示被查找的文件名,不包括引号对),第二行开始才出现包含字符串的整行内容;
2、当文件中没有出现要查找的字符串时,find的结果仅仅返回"---------- ×××" 这一行内容(×××表示被查找的文件名,不包括引号对)。
在查找指定字符串的时候,有的场合需要区分大小写,有的场合则对大小写并不在意,如何实现这些需求呢?
很简单,在find的时候,添加或取消/i开关就是了,具体用法为:find /i "Abc" test.txt 表示不区分大小写,文本内容中含有 Abc、abc、ABC之类的都算;find "Abc" test.txt则严格区分字符大小写,只能匹配Abc,而不能匹配abc、ABC之类的字符。
有时候,我们的需求并不是为了查找到某个字符串,而是要检测哪些行不含有特定的字符串,这个时候,可以使用开关/v,用法为:find /v "Abc" test.txt,它表示查找那些不含字符串Abc的行(Abc要区分大小写),如果不区分abc的大小写,那么,应该写成 find /i /v "Abc" test.txt。
1、按名称或正则表达式查找文件要按特定名称搜索文件,命令如下:
find . -name test.txt
如何查找所有格式为pdf的书籍?使用正则表达式:
find ./yang/books -name "*.pdf"
默认情况下,find命令会搜索常规文件,但最好进行指定(-type f)以使所有内容更清晰:
find ./yang/books -type f -name "*.pdf"
2、查找不同类型的文件
除了搜索常规文件外,我们还可以通过指定-type选项来搜索其他类型的文件,例如目录:
find . -type d -name "yang*"
或者符号链接:
find . -type l -name "yang*"
3、按指定的时间戳查找文件
要搜索atime超过一年的文件,我们可以编写如下命令:
find . -type f -atime +365
如果我们需要查找mtime正好是5天前的文件,请不要包含+,因为它的意思是“大于”。
find . -type f -mtime 5
显然,+表示“大于”,-表示“小于”。所以我们可以搜索ctime在5~10天前的文件:
find . -type f -ctime +5 -ctime -10
4、按大小查找文件
类似于按时间戳查找文件,+表示“大于”,-表示“小于”。例如,要查找大小为10MB~1GB的文件:
find . -type f -size +10M -size -1G
5、按权限查找文件
合理控制文件的权限是Linux管理员的一项重要任务。find命令的-perm选项可以帮助我们按指定权限查找文件:
find . -type f -perm 777
6、按所有权查找文件
例如,以下命令将查找所有属于yang的文件:
find -type f -user yang
7、在找到文件后执行命令
在大多数情况下,我们希望在找到我们需要的文件后进行后续 *** 作。例如将其删除,或检查它们的详细信息等等。-exec命令使这些所有事情变得更加容易。
现在,要了解如何使用它,让我们回到之前提到的面试问题:
find . -type f -atime +365 -exec rm -rf {} \
上述命令在-exec选项后是rm -rf,其用于删除文件。{}是用于查找结果的占位符。
注意:占位符{}非常重要,尤其是在您想删除文件时。因为,如果您不使用它,该命令将对所有文件执行(而不是您刚刚通过find命令找到的文件)。
找出/home下不是以.txt结尾的文件
类型参数列表:
向下最大深度限制为3
搜索出深度距离当前目录至少2个子目录的所有文件
UNIX/Linux文件系统每个文件都有三种时间戳:
搜索恰好在七天前被访问过的所有文件
搜索访问时间超过10分钟的所有文件
找出比file.log修改时间更长的所有文件
文件大小单元:
搜索小于10KB的文件
搜索等于10KB的文件
删除当前目录下所有.txt文件
当前目录下搜索出权限为777的文件
找出当前目录下权限不是644的php文件
找出当前目录用户tom拥有的所有文件
找出当前目录用户组sunk拥有的所有文件
找出当前目录下所有root的文件,并把所有权更改为用户tom
上例中,{} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。
找出自己家目录下所有的.txt文件并删除
上例中,-ok和-exec行为一样,不过它会给出提示,是否执行相应的 *** 作。
查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中
将30天前的.log文件移动到old目录中
找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来
因为单行命令中-exec参数中无法使用多个命令,以下方法可以实现在-exec之后接受多条命令
查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk
要列出所有长度为零的文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)