15 个实用的 Linux find 命令示例
除了在目录结构下查找文件的基本操作外,我们还可以使用 find
命令执行一些实际操作,这将使我们的命令行之旅变得轻松。
在本文中,让我们回顾 15 个 Linux find
命令的实际示例,它们对新手和专家都非常有用。
首先,在主目录下创建以下示例空文件,从而方便尝试下面提到的一些 find
命令示例。
$ vim create_sample_files.sh
touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c
mkdir backup
cd backup
touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c
$ chmod +x create_sample_files.sh
$ ./create_sample_files.sh
查看运行结果如下
1.使用名称查找文件
这是 find
命令的基本用法。 此示例在当前目录及其所有子目录中查找名称为 MyCProgram.c 的所有文件。
$ find -name "MyCProgram.c"
2.使用名称查找文件并忽略大小写
这是 find
命令的基本用法。 此示例在当前目录及其所有子目录中查找名称为 MyCProgram.c(忽略大小写)的所有文件。
$ find -iname "MyCProgram.c"
3.使用 mindepth 和 maxdepth 将搜索限制在特定目录级别
在从根目录开始的所有子目录下找到 passwd 文件。
$ find / -name passwd
在根目录下找到 passwd 文件并向下一层。 (即根目录 - 1 级,一个子目录 - 2 级)
$ find / -maxdepth 2 -name passwd
找到root下两级下的 passwd 文件。 (即 root — 级别 1,以及两个子目录 — 级别 2 和 3 )
$ find / -maxdepth 3 -name passwd
找到子目录级别 2 和 4 之间的 passwd 文件。
$ find / -mindepth 3 -maxdepth 5 -name passwd
4.对Find命令找到的文件执行命令
在下面的示例中,find
命令计算所有名称为 MyCProgram.c 的文件的 md5sum
(忽略大小写)。 {}
替换为当前文件名。
$ find -iname "MyCProgram.c" -exec md5sum {} \;
5.逆转查找结果
显示名称不是 MyCProgram.c 的文件或目录。由于 maxdepth 为 1,因此只会在当前目录下查看。
$ find -maxdepth 1 -not -iname "MyCProgram.c"
6.通过 inode Number 查找文件。
每个文件都有一个唯一的 inode 编号,使用它我们可以识别该文件。 创建两个具有相似名称的文件。 即一个文件末尾有一个空格。
$ touch "test-file-name"
$ touch "test-file-name " # 注意这后面的空格
[Note: There is a space at the end]
$ ls -1 test*
查看文件的结果如下
从 ls 输出中,我们无法确定哪个文件末尾有空格。 使用选项 -i
可以查看文件的 inode
号,这两个文件会有所不同。
$ ls -i1 test*
我们可以在 find
命令上指定 inode 编号,如下所示。 在此示例中,find
命令使用 inode 编号重命名文件。
$ find -inum 37945133 -exec mv {} new-test-file-name \;
$ ls -i1 *test*
当我们想对命名不佳的文件进行一些操作时,我们可以使用此方式,如下例所示。 例如,名称为 - file?.txt
的文件中包含一个特殊字符。 如果我们尝试执行 rm file?.txt
,以下三个文件都将被删除。 因此,请按照以下步骤仅删除“file?.txt”文件。
$ ls
file1.txt file2.txt file?.txt
查找每个文件的 inode 号。
$ ls -i1
使用 inode 编号删除其中包含特殊字符的文件,如下所示。
$ find -inum 37945122 -exec rm {} \;
7.根据文件权限查找文件
可以进行以下操作。
- 查找与确切权限匹配的文件
- 检查给定的权限是否匹配,而不考虑其他权限位
- 通过给出八进制/符号表示进行搜索
对于此示例,让我们假设该目录包含以下文件。 请注意,这些文件的文件权限是不同的。
$ ls -l
查找对组具有执行(x)
权限的文件。 使用以下命令在我们的主目录中查找可执行的所有文件,而不管该文件的其他权限。
$ find . -perm -g=x -type f -exec ls -l {} \;
查找仅对组具有读取权限的文件。
$ find . -perm g=r -type f -exec ls -l {} \;
查找仅对组具有读取权限的文件 [按八进制搜索]
$ find . -perm 040 -type f -exec ls -l {} \;
8.在你的主目录及其子目录中查找所有空文件(零字节文件)
以下命令输出的大多数文件将是其他应用程序创建的锁定文件和占位符。
$ find ~ -empty
仅列出我们的主目录中的所有空文件。
$ find . -maxdepth 1 -empty
仅列出当前目录中的非隐藏空文件。
$ find . -maxdepth 1 -empty -not -name ".*"
9.查找前 5 个大文件
以下命令将显示当前目录及其子目录中前 5 个最大的文件。 这可能需要一段时间才能执行,具体取决于命令必须处理的文件总数。
$ find . -type f -exec ls -s {} \; | sort -n -r | head -5
10.查找前 5 个小文件
方法与查找更大的文件相同,但排序的唯一区别是升序。
$ find . -type f -exec ls -s {} \; | sort -n | head -5
在上面的命令中,很可能我们只会看到零字节文件(空文件)。 因此,我们可以使用以下命令列出除零字节文件之外的较小文件。
$ find . -not -empty -type f -exec ls -s {} \; | sort -n | head -5
11.使用选项 -type 根据文件类型查找文件
仅查找套接字文件。
$ find . -type s
查找所有目录
$ find . -type d
只查找普通文件
$ find . -type f
找到所有隐藏文件
$ find . -type f -name ".*"
找到所有隐藏目录
$ find -type d -name ".*"
12.通过比较其他文件的修改时间来查找文件
显示在指定文件之后修改的文件。 以下 find
命令显示了在 test-file-name 之后创建/修改的所有文件。
$ find -newer test-file-name
13.按大小查找文件
使用 -size 选项,我们可以按大小查找文件。
查找大于给定大小的文件
$ find ~ -size +100M
查找小于给定大小的文件
$ find ~ -size -100M
查找与给定大小完全匹配的文件
$ find ~ -size 100M
注意
:- 表示小于给定大小,+ 表示大于给定大小,无符号表示精确给定大小。
14.为频繁的查找操作创建别名
如果发现某些查找操作非常有用,那么我们可以将其设为别名。 并随时执行它。
经常删除名为 a.out 的文件。
$ alias rmao="find . -iname a.out -exec rm {} \;"
$ rmao
删除 c 程序生成的核心文件。
$ alias rmc="find . -iname core -exec rm {} \;"
$ rmc
15.使用 find 命令删除大存档文件
以下命令删除超过 100M 的 *.zip
文件。
$ find / -type f -name *.zip -size +100M -exec rm -i {} \;"
使用别名 rm100m
删除所有超过 100M 的 *.tar
文件(删除 100M)。 使用类似的概念并创建别名,如 rm1g
、rm2g
、rm5g
以分别删除大于 1G、2G 和 5G 的文件大小。
$ alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;"
$ alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;"
$ alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;"
$ alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;"
$ rm100m
$ rm1g
$ rm2g
$ rm5g
相关文章
在 Linux 中安装 MySQL 客户端
发布时间:2023/05/09 浏览次数:72 分类:MySQL
-
在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。
在 Linux 中更新 YUM
发布时间:2023/05/04 浏览次数:82 分类:操作系统
-
本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。
在 Linux 中安装 Deb 文件
发布时间:2023/05/04 浏览次数:130 分类:操作系统
-
本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。
Linux 中的 lsof 命令
发布时间:2023/05/04 浏览次数:82 分类:操作系统
-
在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。
Linux 解决不能执行二进制文件问题
发布时间:2023/05/04 浏览次数:187 分类:操作系统
-
在本文中,我们将学习如何在 Linux 中执行二进制文件。 如果 Linux 无法执行二进制文件,我们还将学习如何解决错误。
Linux 中错误 Mesg: Ttyname Failed: Inappropriate Ioctl for Device Error
发布时间:2023/05/04 浏览次数:145 分类:操作系统
-
本文介绍如何在 Linux 中解决 mesg: ttyname failed: inappropriate ioctl for device 错误。在 Linux 中,这个错误是由于默认的 vagrant 配置 config.ssh.shell 与 bash -l 交互导致的。
Linux 中的 ps aux 命令
发布时间:2023/05/04 浏览次数:69 分类:操作系统
-
本篇文章将讨论 Linux 中的 ps aux 命令。如果将 aux 快捷方式与 ps 命令一起使用,它将显示用户需要的最多信息,并可以为您提供系统运行进程的当前状态。
Linux 中的 NTP
发布时间:2023/05/04 浏览次数:137 分类:操作系统
-
本篇文章将讨论 Linux 中的 ntp。NTP 是大多数 IT 基础设施使用的核心协议。 使用它的目的是同步日期和时间信息。
在 Linux 中计算文件中的唯一行
发布时间:2023/05/04 浏览次数:70 分类:操作系统
-
计算文件中的唯一行是 Linux 中的一项常见任务,可以使用多种不同的工具和方法来执行此操作。使用 sort 和 uniq 命令计算文件中的唯一行数