Linux:使用Find命令搜索文件
Linux中的find
命令是一个强大的工具,它允许您基于各种参数在给定目录层次结构中搜索文件和目录。在本教程中,我们将探讨如何使用find命令及其各种选项。
基本语法
find命令的基本语法如下:
find [目录] [表达式]
这里,[目录]
是您要在其中搜索文件的目录,[表达式]
是您要应用的搜索条件。find命令将在给定的[目录]
及其子目录中搜索与指定的[表达式]
匹配的文件和目录。
find命令的输出是与指定搜索条件匹配的文件和目录列表。例如,如果运行以下命令:
find . -name "*.txt"
您将获得当前目录及其子目录中所有具有.txt
扩展名的文件列表:
./example.txt
./example2.txt
./subdir/example3.txt
通过文件名查找文件
要通过文件名查找文件,请使用 -name
选项,后跟您要查找的文件名。例如,要在当前目录及其子目录中搜索名为 example.txt
的文件,请使用以下命令:
find . -name "example.txt"
这将在当前目录及其子目录中搜索所有名为 "example.txt" 的文件。
要搜索具有特定扩展名的所有文件,请使用 -name
选项,后跟通配符字符 *
和您要查找的扩展名。例如,要在当前目录及其子目录中搜索所有具有 .txt
扩展名的文件,请使用以下命令:
find . -name "*.txt"
这将在当前目录及其子目录中搜索所有具有 .txt
扩展名的文件。
实际上,通配符字符 *
可以在文件名的任何部分中使用。例如:
find . -name "example*"
find . -name "*example.txt"
find . -name "*example.*"
查找目录
要在当前目录及其子目录中搜索所有目录,请使用 -type
选项后跟 d
。例如,要搜索当前目录及其子目录中的所有目录,请使用以下命令:
find . -type d
这将在当前目录及其子目录中搜索所有目录。
按修改时间查找文件
要搜索在特定时间范围内修改的所有文件,请使用 -mtime
选项后跟天数。如果要搜索在过去 n
天内修改的文件,请使用负数 -n
。
例如,要搜索在过去 7 天内修改的所有文件,请使用以下命令:
find . -mtime -7
find . -mtime -1w
-mtime
选项的默认时间单位为天。
您可以在 macOS 上使用其他时间单位:
s
- 秒m
- 分钟h
- 小时d
- 天w
- 周
您还可以使用
-atime
和-ctime
选项根据文件的访问时间和创建时间搜索文件。
按文件大小查找文件
要搜索所有大于特定大小的文件,请使用 -size
选项,后跟带有 +
符号的字节数大小。要搜索所有小于特定大小的文件,请使用 -size
选项,后跟带有 -
符号的字节数大小。
例如,要在当前目录及其子目录中搜索所有大于 10MB
的文件,请使用以下命令:
find . -size +10M
这将在当前目录及其子目录中搜索所有大于 10MB
的文件。
您可以使用的常见大小单位是:
c
- 字节k
- 千字节(1024 字节)M
- 兆字节(1024 千字节)G
- 吉字节(1024 兆字节)T
- 太字节(1024 吉字节)P
- 拍字节(1024 太字节)
组合搜索条件
您可以组合多个搜索条件以查找符合特定条件的文件。例如,要搜索在过去 7 天内修改的具有特定扩展名的所有文件,请使用以下命令:
find . -name "*.txt" -type f -mtime -7
这将在当前目录及其子目录中搜索所有在过去 7 天内修改的具有 .txt
扩展名的文件。
使用 find 命令的输出
您可以以各种方式使用 find 命令的输出。以下是一些示例:
要将 find 命令的输出保存到文件中,请使用以下命令:
find . -name "*.txt" > files.txt
这将把所有扩展名为 .txt
的文件名保存到名为 files.txt
的文件中。
要将 find 命令的输出用作另一个命令的输入,请使用 xargs
命令。
例如,要删除具有特定扩展名的所有文件,请使用以下命令:
find . -name "*.txt" -type f | xargs rm
要对 find 命令找到的每个文件执行操作,请使用 -exec
选项。
例如,要更改具有特定扩展名的所有文件的权限,请使用以下命令:
find . -name "*.txt" -type f -exec chmod 644 {} \;
-exec
参数的语法是:
-exec command {} \;
command
是您要在 find 找到的文件上执行的命令。{}
是一个占位符,将被 find 找到的文件的名称替换。\;
用于终止命令并表示-exec
参数的结束。 使用wc
命令来计算find
命令找到的文件数量。例如,要计算具有特定扩展名的文件数量,请使用以下命令:
find . -name "*.txt" -type f | wc -l
结论
Linux 中的 find
命令是一个强大的工具,它允许您根据各种条件搜索文件和目录。通过使用其各种选项和组合搜索条件,您可以快速找到所需的文件和目录。您还可以以各种方式使用 find
命令的输出来对找到的文件执行操作。