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 命令的输出来对找到的文件执行操作。
