您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

通过26个实例彻底掌握 linux find 命令的使用

时间:2022-11-27 15:33:44  来源:今日头条  作者:鸠摩智首席音效师

 

find 命令有什么用 ?

find 命令在 linux 和 UNIX 系统中用于查找文件和目录,并可对其执行后续操作。

在 find 命令的帮助下,系统管理员可以根据一些搜索条件查找所需的文件。我们可以使用单个或组合多个标准,然后可以对获得的结果执行操作。可选搜索条件:文件名称、目录名称、创建日期、修改日期、属主、权限。

find 命令语法格式:

$ find <path> {file-or-directory-name} <options> <action-on-result>

<action-on-result> 可选项:

  • – delete : 删除文件或目录
  • -exec command {}; : 根据 find 命令的结果执行命令
  • -ok command : 它将运行与 -exec 相同的命令,但它将在实际执行之前提示

(1) 查找当前工作目录下的所有文件和目录

若要只查找目录,请运行

$ find . -type d

若要只查找文件,请运行

$ find . -type f

(2) 列出特定目录下的所有文件

假设我们要列出 /home/linuxtechi/Downlods 目录下的所有文件和目录,运行

$ find /home/linuxtechi/Downloads

如果只查找文件,请运行

$ find /home/linuxtechi/Downloads -type f

如果只查找目录,请运行

$ find /home/linuxtechi/Downloads -type d

 

(3) 从目录中按文件名查找文件

要在特定目录中按名称查找文件,请运行

$ sudo find /home -type f -name cleanup.sh

上面的命令将在 /home 文件夹中查找 cleanup.sh 文件。我们还可以在 /var/log 目录中查找扩展名为 .log 的所有文件,运行

$ sudo find /var/log -type f -name *.log

 

(4) 在多个目录中查找文件

假设我们想在 /home 和 /root 文件夹中找到 .sh 扩展名的文件,请运行

$ sudo find /home /root -type f -name '*.sh'

 

(5) 忽略文件名大小写

为了查找文件名不受大小写影响,我们可以在 find 命令中使用 -iname 选项

$ sudo find /home -type f -iname CleanUP.SH
/home/linuxtechi/automation/cleanup.sh
$

(6) 查找除上述类型之外的所有文件类型

假设我们要查找所有不是上述类型的文件,为此可以在 find 命令中使用 -not 选项,如下所示

$ sudo find /home -type f -not -name '*.mp3'

(7) 使用多个条件查找文件

我们还可以组合多个条件来使用正则表达式搜索文件。假设我们想在主目录中搜索扩展名为 .sh 和 .mp3 的文件,运行

$ find $HOME -regex ".*.(sh|mp3)$"

 

(8) 使用 OR 条件查找文件

我们还可以组合多个搜索条件,然后使用 OR 操作符根据一个条件中的任何一个条件的满足来查找文件

$ find $HOME -name "*.sh" -o -name "jumpscripts"
/home/linuxtechi/automation/cleanup.sh
/home/linuxtechi/dumpdata.sh
$

9) 根据权限查找文件

要根据权限查找文件,请在查找命令中使用 - perm 选项。

例如在 /home 目录中查找具有 0777 权限的所有文件,运行

$ sudo find /home -type f -perm 0777

在用户目录查找所有可执行文件

$ find $HOME -type f -perm /a+x

(10) 查找所以隐藏文件

要搜索用户主目录中的所有隐藏文件,请运行命令

$ find $HOME -type f -name ".*"

(11) 找到所有具有 SGID 的文件

要定位所有具有 SGID 位的文件,我们可以使用

$ sudo find / -perm /g=s

(12) 找到所有带有 SUID 的文件

要定位所有 SUID 位的文件,运行

$ sudo find / -perm /u=s

(13) 查找所有可读但没有执行权限的文件

若要只查找所有人都可读但任何人都不能执行的文件,请运行

$ find $HOME -perm -a+r ! -perm /a+x

(14) 搜索几种文件类型

在一个查找命令中,我们可以搜索多种文件类型

$ find $HOME -type f,d,l

(15) 查找用户拥有的所有文件

To locate all the file that are owned by a particular user in /home directory, run following command,

要找到 /home 目录中属于特定用户的所有文件,请运行以下命令

$ sudo find $HOME -user linuxtechi

(16) 找到一个组拥有的所有文件

下面的命令将搜索 Apache 组拥有的所有文件。

$ sudo find / -group apache

(17) 按文件大小查找所有文件

Use ‘-size’ option in find command to search files based on the size.
Run following command to find all files whose size is exactly 50MB.

使用 -size 选项根据文件大小进行搜索

查找等于 50MB 的文件

$ find $HOME -size 50M
/home/linuxtechi/dbstuff
$

查找大于 50MB 的文件

$ find $HOME -size +50M

查找小于 50MB 的文件

$ find $HOME -size -50M

查找大小在 40MB 到 500MB 之间的文件

$ find $HOME -size +40M -size -500M

(18) 不下行目录到其他文件系统

-xdev 选项列出了另一个文件系统中的挂载点或分区,但它不会向下查找它们。

下面的命令将在 / 目录中搜索大于 100MB 的所有文件,排除其他挂载的文件系统,重定向错误消息到 /dev /null

$ find / -xdev -size +100M 2>/dev/null

 

(19) 查找 N 天前修改过的文件

假设我们想要定位 10 天前修改过的所有文件。我们可以使用 -mtime 选项来实现这一点

$ sudo find / -mtime 10 2>/dev/null

(20) 找出 N 天前被访问过的文件

假设我们想要定位 10 天前被访问过的所有文件。我们可以使用 -atime 选项来实现这一点

$ sudo find / -atime 30 2>/dev/null

(21) 找到所有的空文件和目录

要在用户主目录中搜索所有空文件,请运行

$ find $HOME -type f -empty
or 
$ find $HOME -type f -size 0

类似地,定位所有空目录

$ find $HOME -type d -empty

(22) 搜索和删除文件

使用 find 命令,我们在单个命令中搜索和删除文件,-delete 选项可以删除文件。

在下面的例子中,我们正在从用户的主目录中搜索并删除 mp3 文件

$ find $HOME -type f -name "*.mp3" -delete

 

注意: 上面是破坏性命令,执行它时要小心。

(23) 查找最大和最小的文件

To find largest and smallest file, we will combine sort command with find command & if we further want to list top three of those largest files, we will combine head

为了找到最大和最小的文件,我们将结合 sort 命令和 find 命令,如果我们进一步想列出最大文件中的前三个,我们将结合 head 命令列出用户主目录中前三个文件

$ find $HOME -type f -exec ls -s {} ; | sort -n -r | head -3
51200 /home/linuxtechi/dbstuff
8276 /home/linuxtechi/.cache/gnome-software/Appstream/components.xmlb
2764 /home/linuxtechi/.local/share/gnome-photos/tracker3/private/meta.db-wal
$

我们同样可以在用户的主目录中找到最小的文件

$ find $HOME -type f -exec ls -s {} ; | sort -n | head -3

(24) 找到所有日志文件并将它们重定向到一个文件

To run command on find command result use -exec option, it’s syntax given below,

要在查找结果上运行命令,使用 -exec 选项,其语法如下所示

$ find -exec {} ;

以下命令将找到所有文件,并将其名称重定向到 /tmp/logsfiles.txt

$ sudo find /var -type f -name '*.log' -exec ls -lah {} ; > /tmp/logfiles.txt

 

(25) 搜索文件并更改其权限

假设我们想要搜索权限为 777 的所有文件,并将其权限更改为 644

$ find $HOME -type f -perm 777 -exec chmod 644 {} ;

(26) 从文件中搜索文本

Let’s assume we want to search error word in all log files, run following command

假设我们要在所有日志文件中搜索带有 error 关键字的文件,运行以下命令

$ sudo find /var -type f -name '*.log' -exec grep -i 'error' {} ;

在上面的命令中,我们结合了 find 和 grep 命令来完成任务。



Tags:linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除。
▌相关推荐
深度优化数据库性能:Linux 内核参数调整解析
数据库服务器性能的优化是每个IT团队关注的焦点之一。除了数据库引擎的优化之外,合理调整操作系统的内核参数也是提高数据库性能的关键。本文将解析一些常见的 Linux 内核参...【详细内容】
2023-11-17  Tags: linux  点击:(2)  评论:(0)  加入收藏
Linux 系统 Shell 中那些特殊变量
在Shell脚本中,$符号有多种含义,它通常用于表示变量、特殊变量或参数,今天介绍几个特殊的变量。 $0表示shell脚本文件本身 $1 ~ $n脚本的位置参数,表示脚本或函数的参数。例如,$1...【详细内容】
2023-11-14  Tags: linux  点击:(5)  评论:(0)  加入收藏
这些 Linux 基础命令你总得掌握吧
很多深度学习/机器学习/数据分析等领域(或者说大多数在Python环境下进行操作的领域)的初学者入门时是在Windows上进行学习,也得益于如Anaconda等工具把环境管理做的如此友善。...【详细内容】
2023-11-10  Tags: linux  点击:(8)  评论:(0)  加入收藏
Linux 中的 ls 命令使用教程
对我个人而言,ls 无疑是 最常被使用的 Linux 命令,因为我们总是借助它 列出目录内的内容 来检验上一步操作的结果。ls 命令是 “列表List” 的缩写,其功能就是列出你指定目录下...【详细内容】
2023-10-09  Tags: linux  点击:(51)  评论:(0)  加入收藏
“维护者都快累死了!”Linux 宣布:LTS 版本的维护期,将从 6 年变回 2 年
整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)在本周举行的欧洲开源峰会上,Linux 内核开发者兼《Linux 每周新闻(Linux Weekly News)》执行主编 Jonathan Corbet 宣布了一个重大变化:Linu...【详细内容】
2023-09-26  Tags: linux  点击:(56)  评论:(0)  加入收藏
如何在 Linux 下使用 WebP 图像
WebP 图像格式的定义2010 年 9 月,谷歌提出了 WebP 图像格式,其愿景是完全替代 JPEG、PNG 和 GIF 文件格式。就如你所见,WebP 是一个全能型的格式,继承了先前压缩算法的所有特性...【详细内容】
2023-09-25  Tags: linux  点击:(48)  评论:(0)  加入收藏
中国首个接入大模型的 Linux 操作系统来了
9 月 22 日,统信软件运营的深度社区正式官宣 deepin 成为首个接入大模型的开源操作系统。统信软件高级副总经理、CTO 张磊表示,“目前 UOS AI 实现了国内外主流大模型的能力接...【详细内容】
2023-09-25  Tags: linux  点击:(78)  评论:(0)  加入收藏
Linux 如何挽救老旧电脑
我的两位孙子,Mint 和 Kasen,请求我帮助他们搭建游戏电脑。他们的请求让我感到非常欣喜。这不仅给了我一个与他们共度时光的美好机会,也让我能够帮助他们了解科技。同时,我能深...【详细内容】
2023-09-18  Tags: linux  点击:(85)  评论:(0)  加入收藏
在 Linux 文件系统中使用 attr 添加扩展属性
“文件系统” 是一个描述你的计算机怎样跟踪你创建的所有文件的完美词语。你的计算机存储有大量的数据,无论是文档、配置文件还是数以千计的照片。这需要一种对人和机器都友...【详细内容】
2023-09-15  Tags: linux  点击:(83)  评论:(0)  加入收藏
Bcachefs已被合并到Linux-Next,Linux 6.7有望引入
此前我们报道过Linus 亲自 review 代码,希望平息关于 Bcachefs 文件系统驱动的 “内斗”,近日 Linux 6.6 RC 1 发布,然而备受瞩目的 Bcachefs 没有在 Linux 6.6 开发周期中被合...【详细内容】
2023-09-13  Tags: linux  点击:(77)  评论:(0)  加入收藏
▌简易百科推荐
linux的系统调用执行探究
arm64大约支持280个系统调用,我们平时使用的这些系统调用,到底工作原理是什么,调用后又是到哪里实现的呢,这篇文章初步了解下内核系统调用的流程,并告诉跟踪这个流程的方法。废话...【详细内容】
2023-11-17  hello小崔  微信公众号  Tags:linux   点击:(2)  评论:(0)  加入收藏
Linux系统中软链接和硬链接
硬链接是指在文件系统中创建一个新的文件名,该文件名指向同一个inode(即文件的实际数据块)。硬链接与原始文件具有相同的inode号,它们共享相同的数据块。当删除原始文件时,硬链接...【详细内容】
2023-11-15  沐雨花飞蝶  微信公众号  Tags:Linux   点击:(4)  评论:(0)  加入收藏
Linux 系统 Shell 中那些特殊变量
在Shell脚本中,$符号有多种含义,它通常用于表示变量、特殊变量或参数,今天介绍几个特殊的变量。 $0表示shell脚本文件本身 $1 ~ $n脚本的位置参数,表示脚本或函数的参数。例如,$1...【详细内容】
2023-11-14  IT人家  微信公众号  Tags:Shell   点击:(5)  评论:(0)  加入收藏
这些 Linux 基础命令你总得掌握吧
很多深度学习/机器学习/数据分析等领域(或者说大多数在Python环境下进行操作的领域)的初学者入门时是在Windows上进行学习,也得益于如Anaconda等工具把环境管理做的如此友善。...【详细内容】
2023-11-10  啥都会一点的研究生  微信公众号  Tags:Linux   点击:(8)  评论:(0)  加入收藏
五个被忽视的Linux实用命令
提到Linux,新手用户会认为这是一个复杂的操作系统,因为所有工作都是通过终端使用命令来完成的。但是当用户开始在Linux上工作时,就会喜欢上这些命令,在Linux上工作一段时间后,用...【详细内容】
2023-11-07  Python学研大本营    Tags:Linux   点击:(15)  评论:(0)  加入收藏
Linux服务器超级实用的Shell脚本,建议收藏!
Shell 脚本是一种强大的工具,可以在各种领域中用于提高工作效率、简化任务和自动化常见工作流程。无论是系统管理、数据处理、任务自动化还是快速原型开发,Shell 脚本都是一种...【详细内容】
2023-11-07  IT人家  微信公众号  Tags:Linux   点击:(18)  评论:(0)  加入收藏
Linux如何查看端口是否开放
1.使用lsof命令lsof -i-i<条件>列出符合条件的进程。(4、6、协议、:端口、 @ip )例如查看端口80lsof -i:80没有输出则说明没有开启此端口2.使用netstat -aptn查看所有开启的端...【详细内容】
2023-11-07  EmSpace    Tags:Linux   点击:(3)  评论:(0)  加入收藏
使用SELinux进行Linux系统安全加固
SELinux(Security-Enhanced Linux)是一种在Linux系统中实现强制访问控制(MAC)的安全机制,它能够对系统资源进行细粒度的访问控制,提高系统的安全性和防范能力。在进行Linux系统安...【详细内容】
2023-10-31  编程技术汇  今日头条  Tags:Linux系统   点击:(26)  评论:(0)  加入收藏
Linux内核显示、加载、卸载等超实用命令
内核模块是 Linux 系统中一种特殊的可执行文件,它可以在运行时动态地加载到内核中或卸载出内核,从而实现内核的扩展和优化。内核模块操作相关的命令主要有以下几种:1.lsmod命令...【详细内容】
2023-10-30    IT人家  Tags:Linux   点击:(14)  评论:(0)  加入收藏
Linux必须掌握的定时工具cron
cron 是Linux和Unix系统上的一个定时任务调度工具,用于按照预定的时间表执行命令、脚本和任务。cron 允许您自动化重复性的工作,例如备份、日志清理、系统监控等。下面是关于c...【详细内容】
2023-10-18    IT人家  Tags:Linux   点击:(36)  评论:(0)  加入收藏
站内最新
站内热门
站内头条