如何使用find命令查找文件?

如何使用find命令查找文件?,第1张

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、按指定的时间戳查找文件

要按指定的时间戳搜索文件,我们需要知道 Linux 系统中的 3 个不同的时间戳:

访问时间戳(atime):最后一次读取文件的时间。

修改时间戳 (mtime):文件内容最后一次被修改的时间。

更改时间戳 (ctime):上次更改文件元数据的时间(如,所有权、位置、文件类型和权限设置)

所以,正如开头提到的面试题,要搜索atime超过一年的文件,我们可以编写如下命令:

find . -type f -atime +365

如果我们需要查找 mtime 正好是 5 天前的文件,请不要包含 +,因为它的意思是“大于”。

find . -type f -mtime 5

显然,+ 表示“大于”,- 表孙凳示“小于”。所以我们可以搜索 ctime 在 5~10 天前的文件:

find . -type f -ctime +5 -ctime -10

4、按大小查找文件

-size选项使我们能够按指定大小查找文件。我们可以将则樱旅其计量单位指定为以下约定:

b:512 字节块(默认)

c:字节

w:双字节字

k:KB

M:MB

G:GB

类似于按时间戳查找文件,+表示“大于”,-表示“小于”。例如,要查找大小为 10 MB ~ 1 GB 的文件:

find . -type f -size +10M -size -1G

5、按权限查找文件

合理控制文件的权限是 Linux 管理员的一项重要任务。find命令的-perm选项可以帮助我们按指定权限查找文件:

find . -type f -perm 777

例如,上面的命令会搜索所有具有 777 权限的文件,这意味着一个文件对其持有者、组和所有用户具有所有的读、写和可执行权限。

6、按所有权查找文件

这个任务很简单。我们可以使用 -user 选项指定用户名。例如,以下命令将查找所有属于 yang 的文件:

find -type f -user yang

7、在找到文件后执行命令

在大多数情况下,我们希望在找到我们需要的文件后进行后续 *** 作。例如将其删除,或检查它们的详细信息等等。-exec命令使这些所有事情变得更加容易。

在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。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12504039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存