shell查找字符串在文件中是否存在_Linux查找命令教程(包含示例)第一章节

0aeeecf9d46b7b9178aa7b4b280770f5.png

通过优锐课的java架构专题分享学习中,了解到了Linux查找命令教程(包含示例)。码了很多专业的知识点,整理后分享给大家参考学习。特别是其中的架构思维导图很有参考性,在提升的知友们可以好好巩固一番!

在系统上查找文件或目录时,Linux上的find命令无与伦比。 它使用简单,但具有许多不同的选项,可让你微调对文件的搜索。

继续阅读以查看如何使用此命令在系统上查找任何内容的示例。 一旦你知道如何在Linux中使用find命令,每个文件都只需敲击几下。

1、查找目录

你可以告诉find命令专门针对带有-type d选项的目录。 这将使find命令仅搜索匹配的目录名,而不搜索文件名。

Shell
$ find /path/to/search -type d -name "name-of-dir"

2b232ecad45680ac94b0e260cf8d203a.png

2、查找隐藏文件

由于Linux中的隐藏文件和目录以句点开头,因此我们可以在搜索字符串中指定此搜索模式,以便递归列出隐藏文件和目录。

Shell
$ find /path/to/search -name ".*"

3、查找特定大小或大于X的文件

find上的size选项允许我们搜索特定大小的文件。 它可用于查找确切大小的文件,大于或小于特定大小的文件或适合指定大小范围的文件。 以下是一些示例。

搜索大于10MB的文件:

Shell
$ find /path/to/search -size +10M


搜索小于10MB的文件:

Shell
$ find /path/to/search -size -10M

搜索大小恰好为10MB的文件:

Shell
$ find /path/to/search -size 10M


搜索大小在100MB到1GB之间的文件:

Shell
 $ find /path/to/search -size +100M -size -1G

4、从文件列表中查找

如果你有需要搜索的文件列表(例如,在.txt文件中),则可以使用find和grep命令的组合来搜索文件列表。 为了使此命令起作用,只需确保要搜索的每个模式都用换行符隔开。

Shell
$ find /path/to/search | grep -f filelist.txt


grep的-f选项表示“文件”,并允许我们指定要匹配的字符串文件。 这导致find命令返回与列表中的文件或目录名称匹配的任何文件或目录名称。

5、查找不在列表中

使用我们在上一个示例中提到的相同文件列表,你还可以使用find搜索与文本文件内的模式不匹配的任何文件。 再一次,我们将结合使用find和grep命令; 我们只需要用grep指定一个附加选项:

Shell
$ find /path/to/search | grep -vf filelist.txt


grep的-v选项表示“逆向匹配”,将返回与文件列表中指定的任何模式都不匹配的文件列表。

6、设置最大深度

find命令默认将进行递归搜索。 这意味着它将在指定的目录中搜索你指定的模式,以及你告诉它要搜索的目录中的所有子目录。

例如,如果告诉find搜索Linux(/)的根目录,则无论存在多少个子目录,它都会搜索整个硬盘。 你可以使用-maxdepth选项来避免这种行为。

在-maxdepth之后指定一个数字以指示查找应递归搜索的子目录数。

仅在当前目录中搜索文件,而不递归搜索:

Shell
$ find . -maxdepth 0 -name "myfile.txt"


仅在当前目录和更深的一个子目录中搜索文件:

Shell
$ find . -maxdepth 1 -name "myfile.txt"

7、查找空文件(零长度)

要使用find搜索空文件,可以使用-empty标志。 搜索所有空文件:

Shell
$ find /path/to/search -type f -empty


搜索所有空目录:

Shell
$ find /path/to/search -type d -empty


如果要自动删除find返回的空文件或目录,将此命令与-delete选项结合使用也非常方便。

删除目录(和子目录)中的所有空文件:

Shell
$ find /path/to/search -type f -empty -delete

8、查找最大的目录或文件

如果你想快速确定系统上哪些文件或目录占用最多的空间,则可以使用find进行递归搜索,并按文件和/或目录的大小输出排序的列表。如何显示目录中最大的文件:

Shell
$ find /path/to/search -type f -printf "%st%pn" | sort -n | tail -1


请注意,find命令已被分类为另外两个方便的Linux实用程序:sort和tail。 Sort将按文件的大小顺序排列文件列表,而tail将仅输出列表中的最后一个文件,该文件也是最大的。

如果要输出例如最大的前五个文件,可以调整tail命令:

Shell
$ find /path/to/search -type f -printf "%st%pn" | sort -n | tail -5


或者,你可以使用head命令来确定最小的文件:

Shell
$ find /path/to/search -type f -printf "%st%pn" | sort -n | head -5


如果要搜索目录而不是文件,只需在类型选项中指定“ d”。 如何显示最大目录:

Shell
$ find /path/to/search -type d -printf "%st%pn" | sort -n | tail -1

9、查找setuid设置文件

是``在执行时设置用户ID''的缩写,它是一种文件权限,允许普通用户以提升的权限(例如root)运行程序。

出于明显的原因,这可能是安全问题,但是可以使用find命令和一些选项轻松隔离这些文件。

find命令有两个选项可帮助我们搜索具有特定权限的文件:-user和-perm。 要查找普通用户能够以root特权执行的文件,可以使用以下命令:

Shell
$ find /path/to/search -user root -perm /4000

f0dd068b2b17d57e8d4aa6da242d9b29.png

在上面的屏幕截图中,我们包含了-exec选项,以便显示有关查找返回文件的更多输出。 整个命令如下所示:

Shell
$ find /path/to/search -user root -perm /4000 -exec ls -l {} ;

你也可以在此命令中用“ root”代替要作为所有者搜索的任何其他用户。 或者,你可以搜索具有SUID权限的所有文件,而根本不指定用户:

Shell
$ find /path/to/search -perm /4000

在上面的屏幕截图中,我们包含了-exec选项,以便显示有关查找返回文件的更多输出。 整个命令如下所示:

Shell
$ find /path/to/search -user root -perm /4000 -exec ls -l {} ;


你也可以在此命令中用“ root”代替要作为所有者搜索的任何其他用户。 或者,你可以搜索具有SUID权限的所有文件,而根本不指定用户:

Shell
$ find /path/to/search -perm /4000

文章先更到这里,下本部分会抓紧码上来。

感兴趣的朋友们欢迎点赞,关注我及我的专栏,第一时间收到更新推送!

每天分享技术干货,职场趣事!一起来说架构那些事--优锐课

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值