如何在 Ubuntu 22.04 或 20.04 终端中搜索文件
在 Ubuntu 命令终端中查找和查找文件的各种方法及其命令示例。
如果您在 Ubuntu 的图形桌面上,则使用其文件管理器查找文件并不是一项困难的任务,但是如何在仅支持 CLI 的命令行服务器上执行相同的操作呢?为此,Ubuntu 提供了一个内置的命令行工具“find”,除此之外还有其他开源工具,例如 Locate,在这里我们也会讨论。这些类似命令的工具允许用户高效地搜索文件。我们可以使用它们根据某些标准(如名称或文件扩展名)搜索特定文件。
1:使用“find”命令搜索文件
默认情况下,所有 Ubuntu Linux 系统都可以使用“find”命令直接在终端中搜索文件。我们甚至可以定义不同的标准,例如名称、类型、大小和修改时间。
要使用它,请切换到要搜索的文件所在的目录,或者在命令中声明要搜索“find”命令的路径。
例如:
在当前目录中搜索
find -name your-file-name
而要在不切换到任何文件夹的情况下搜索,我们必须在命令中声明文件所在的目录路径。
语法:
find /path/to/search -name "your-filename"
将“/path/to/search”替换为您要开始搜索的目录,“your-filename”替换为您要搜索的文件的名称、模式或扩展名。
例如,如果要在终端中搜索文件,例如当前目录及其子目录中的“example.txt”,请使用:
find -name "example.txt"
而如果您不知道确切的文件名,但知道它正在使用的扩展名,则可以使用通配符列出所有这些文件:
示例:它将列出您正在搜索的具有.txt 扩展名的目录中的所有文件。
find -name "*.txt"
2:使用“find”命令及其附加选项
为了更好地使用“find”命令,我们可以使用附加选项来精细化 Ubuntu 终端中的搜索结果。以下是一些常用的选项:
将/path/to/search替换为文件所在的目录路径,或者如果您在文件可用的同一目录中,则将其删除。
按文件类型搜索:
find /path/to/search -type file_type
将/path/to/search替换为想要开始搜索的目录,file_type可以是以下之一:
f:常规文件 d:目录 l:符号链接 b:块设备 c:字符设备 s:套接字 p:命名管道(FIFO)
示例:
搜索常规文件:
要在当前目录及其子目录中搜索常规文件(排除目录、符号链接等),请使用以下命令:
find -type f
搜索目录:
如果您只想在当前位置查找目录,则可以使用以下命令:
find -type d
搜索符号链接:
要在特定目录中搜索符号链接,请使用以下命令:
find /usr/local -type l
此命令将在/usr/local目录中搜索符号链接。
搜索块设备:
如果要查找块设备(例如硬盘或分区),可以使用以下命令:
find /dev -type b
此命令将在/dev目录中搜索块设备。
搜索字符设备:
如果要查找字符设备(例如打印机或串行端口),可以使用以下命令:
find /dev -type c
此命令将在/dev目录中搜索字符设备。
搜索套接字:
如果要查找套接字文件,则可以使用以下命令:
find / -type s
此命令将在根目录中搜索套接字文件。
搜索命名管道(FIFO):
如果要查找命名管道或 FIFO,则可以使用以下命令:
find / -type p
此命令将在根目录中搜索命名管道或 FIFO。
按文件大小搜索:
我们可以使用以下选项按照文件大小搜索文件
find /path/to/search -size [+-]size[ckMeg]
将/path/to/search替换为要在其中搜索文件的目录路径,“**size**”是要搜索的文件的大小(以字节为单位),而“[+-]”可以是以下之一:
+:大于指定大小 -:小于指定大小
“ckMeg”是可选的后缀,用于指定大小的单位。例如:
c:字节 k:千字节(KB) M:兆字节(MB) G:千兆字节(GB)
示例:
以下是按文件大小搜索的示例命令。
搜索大于指定大小的文件:
要在当前目录及其子目录中搜索大于 100MB 的文件,请使用以下命令:
find -size +100M
搜索小于指定大小的文件:
要在当前目录及其子目录中搜索小于 100MB 的文件,请使用以下命令:
find -size -100M
搜索指定大小的文件:
要在当前目录及其子目录中搜索大小为 100MB 的文件,请使用以下命令:
find -size 100M
按时间搜索(修改时间、访问时间、更改时间、状态时间):
除了按文件名和大小搜索文件之外,我们还可以按文件的时间戳搜索文件。有以下四个时间戳:
- mtime:文件的修改时间戳(文件内容修改)
- atime:文件的访问时间戳(最后一次访问文件的时间)
- ctime:文件的更改时间戳(文件内容或元数据的修改)
- crtime:文件的状态时间戳(文件创建时间)
使用以下命令按时间搜索文件:
find /path/to/search -time [+-]n[unit]
将/path/to/search替换为要在其中搜索文件的目录路径,“**n**”是要搜索的时间量,“[+-]”可以是以下之一:
+:更大的时间 -:更小的时间
“unit”是可选的后缀,用于指定时间单位。以下是可用的时间单位:
s:秒 m:分钟 h:小时 d:天
示例:
以下是按时间搜索的示例命令。
搜索在最近 7 天内修改的文件:
要在当前目录及其子目录中搜索最近 7 天内修改的文件,请使用以下命令:
find -type f -mtime -7
搜索在最近 24 小时内访问的文件:
要在当前目录及其子目录中搜索最近 24 小时内访问的文件,请使用以下命令:
find -type f -atime -1
搜索在最近 30 分钟被更改的文件:
要在当前目录及其子目录中搜索最近 30 分钟内更改的文件,请使用以下命令:
find -type f -cmin -30
搜索在最近 1 小时内创建的文件:
要在当前目录及其子目录中搜索最近 1 小时内创建的文件,请使用以下命令:
find -type f -crtime -1h
3:使用“locate”命令搜索文件
“locate”命令是另一个用于在 Ubuntu 终端中搜索文件的工具。它比“find”命令更快,因为它会在系统上创建一个索引数据库,并且在搜索时只需要查找该数据库即可。但是,这也意味着它可能会错过最近创建或修改的文件,因为数据库可能不是最新的。
要使用“locate”命令搜索文件,请使用以下命令:
locate filename
其中“filename”是您要搜索的文件名称、模式或扩展名。
示例:
以下是使用“locate”命令搜索文件的示例命令。
搜索文件:
要在系统中搜索文件,请使用以下命令:
locate example.txt
搜索具有指定扩展名的文件:
如果要列出具有指定扩展名的所有文件,请使用以下命令:
locate "*.txt"
请注意,使用通配符时需要将文件名放在引号中。
结论
无论您是在命令行服务器上工作还是在 Ubuntu 桌面上工作,使用“find”和“locate”命令搜索文件都是非常有用的技能。它们可以帮助您快速找到特定文件,并在需要时对其进行操作。在学习这些命令时,请记住使用选项可以帮助您更好地控制搜索结果。