Hostwinds 教程

寻找结果为:


目录


列表文件
寻找
定位
ls
侏儒
按名称搜索
寻找
定位
侏儒
按大小搜索
寻找
定位
侏儒
查找空文件
寻找
定位
侏儒
在文件匹配中执行操作
寻找
定位
侏儒
使用GREP命令完善搜索
结论

如何使用终端在Ubuntu上找到文件

标签: Cloud Servers,  Dedicated Server 

列表文件
寻找
定位
ls
侏儒
按名称搜索
寻找
定位
侏儒
按大小搜索
寻找
定位
侏儒
查找空文件
寻找
定位
侏儒
在文件匹配中执行操作
寻找
定位
侏儒
使用GREP命令完善搜索
结论

在本教程中,我们将介绍多种方法用于在Ubuntu 20.04 LTS中查找文件和目录(即文件夹),例如查找所有文件 。老的 扩展或查找大于2 GB的所有文件和目录。我们还将介绍如何在每个文件上运行一个或多个命令。

请注意,我们将使用的命令之一是 定位,这与Ubuntu并非本地化。这 定位 命令通常比 寻找 因为它维护所有文件的数据库,该数据库每24小时更新一次。这 定位 命令可以安装如下:

sudo apt install mlocate

由于包括Ubuntu在内的Unix式操作系统中的所有内容都被视为文件,因此"文件"一词也将表示"目录",除非另有说出来。此外,桌面环境示例基于 侏儒。要了解如何使用GNOME访问远程Ubuntu计算机,请参见 使用ubuntu 20.04 TLS的Windows远程桌面.

这样,让我们开始。

列表文件

要列出当前目录下的所有文件,可以使用以下命令:

寻找

纯正的 寻找 命令递归列出当前目录中的所有文件:

find

定位

定位 命令类似于 寻找 但是需要一种模式(在这种情况下是通配符):

locate *


速度 定位 不过,有代价。最近修改的文件可能不会反映在数据库中。要解决此问题,您可以使用 sudo UpdatedB (可能需要一些时间)或使用 -e 选项仅列出当时存在的文件 定位 运行命令(基本上等同于 寻找):

locate -e *

ls

使用递归 -R 选项允许标准 ls 命令产生类似的结果:

ls -Rlha

侏儒

您可以使用GNOME桌面环境产生类似的结果:

按名称搜索

在以下示例中,我们将搜索所有文件 。老的 扩大。

寻找

因为我们正在搜索所有文件,所以我们使用 须藤 命令避免权限错误并从根目录开始搜索(/):

sudo find / -iname *.old


请注意 -我的名字 选项忽略案例,而 -姓名 才不是。

定位

在下面, -一世 选项忽略案例:

sudo locate -i *.old


有趣的是,即使有 -e 选项, 定位 命令找不到 /run/blkid/blkid/tab.old 文件(而 寻找 做)。

侏儒

没有通配符的角色(*),GNOME桌面文件应用程序提供了与 寻找 命令:

按大小搜索

假设我们想找到大于50的所有文件 MIB。对于此任务,我们可以添加 命令我们可能的嫌疑人名单:

命令专为此任务而设计:

sudo du / -ha --threshold=50M

-H 选项提供标准(人)文件尺寸和 -一个 选项包括文件和目录:


要抑制(四个)错误消息,您可以使用 2>&- 争论。您也可以按文件大小排序:

sudo du / -ha --threshold=50M 2>&- | sort -h


最后一行显示磁盘总共包含2.8个数据。

寻找

以下找到大于50 MIB的所有文件(不包括目录):

sudo find / -size +50M


要查看字节中每个文件的大小,您可以使用 -ls 选项(和 2>&- 删除错误消息):

sudo find / -size +50M -ls 2>&-

第七列提供了每个文件的大小,以字节为单位。要仅查看文件路径,输入和大小,您可以使用 -printf 选项,如图所示:

sudo find / -size +50M -printf "%p %y %s bytes\n" 2>&- | column -t


%p 返回文件名, %y 文件类型, %s 字节中的大小,以及 \ n 生成一个newline字符(有关详细信息,执行 男人找到).

列-t 命令根据空格字符创建列。请注意,140737477885952字节不到128 PIB,这显然是不正确的。更准确的演绎如下:

sudo find / -size +50M -printf "%p %y %k KiB\n" 2>&- | column -t


在以上, %k 提供KIB的文件大小(而不是 %s 字节)。

定位

因为 定位 命令的数据库不包含文件大小信息,您不能仅列出大于50 MIB的文件 定位.

侏儒

GNOME的桌面文件应用程序提供了典型的 图形用户界面 结果:

如上所述,对查找大于50 MIB的所有文件,按大小列进行排序并不完全有用。这 要么 寻找 命令更适合此任务。

查找空文件

上面提到的许多命令都有专门用于查找空文件的选项。接下来,我们将研究这些。

寻找

为了 寻找 命令,此任务很简单:

sudo find /tmp -empty -type f,d

此命令找到所有空的文件和目录(即 -ttype f,d/TMP 文件夹,如图所示:


但是哪个呢?如上所述,我们可以使用 -printf柱子 如下:

sudo find /tmp -empty -type f,d -printf "%p %y %s bytes\n" | column -t


请注意,每个空目录都需要在Ubuntu文件系统中存在4096个字节(4 KIB)。这是一个单个空目录和一个空文件的示例:

定位

再次,因为 定位 数据库不包含文件大小信息,无法仅使用the 定位 命令。

侏儒

GNOME的桌面文件应用程序提供了相对非热心的结果:

一个人必须进行大量单击以使用GNOME桌面环境来识别所有空文件。

在文件匹配中执行操作

现在,我们知道如何找到文件,我们可能希望对它们执行操作;例如删除所有 *。老的 文件.

寻找

寻找 命令的 -Exec 选项为每个匹配的文件执行一次提供的命令。例如:

sudo find / -iname "*.old" -exec echo {} \;

简而言之,这执行 回声 每个命令 。老的 找到的文件。在这里, {} 语法代表每个匹配文件。因此,如果 vmlinux.old 是一个匹配的文件,然后是命令 echo vmlinux.old 被执行。分号用于指示命令字符串的结尾 -Exec 选项。因为半龙具有特殊的含义,因此必须使用后斜切角色逃脱(\), 如下:


删除全部 *。老的 来自 /主/karlito 目录(或 ~ 目录),您可以运行以下命令:

sudo find . -iname "*.old" -exec rm -f {} \;

我们可以看到该文件中的所有文件 ~ 目录已被删除:

定位

定位 命令没有 -Exec 选项。但是,我们可以使用 Xargs 命令:

sudo locate -i "*.old" | xargs -0 echo


-0 选项允许 Xargs 正确处理非典型文件名字符。

删除全部 *。老的 来自 /主/karlito 目录,您可以运行:

sudo locate -i "/home/karlito/*.old" | xargs rm


同样,要删除所有 。老的定位 命令的数据库(通常全部 *。老的 磁盘上的文件),您可以运行:

sudo locate -i "*.old" | xargs rm

侏儒

要使用文件应用程序执行相同的操作,请首先搜索所有文件。老的 扩大:

接下来,通过按CTRL + A选择所有匹配文件。然后,按DELETE键,然后选择 删除 按钮:

我们可以在命令提示下确认删除,如下所示:


因为 Xargs 命令是快速,灵活的,并且可以与许多其他命令一起使用,通常在大多数情况下使用它是有意义的。例如,以下将所有包含"备份"的文件复制到用户主文件夹中的名为"备份"的目录中:

sudo find / -type f -iname "*backup*" -print0 | xargs -0 -I {} sh -c 'stat -c "%n %s bytes" {}; cp {} ~/backups'

每个命令和选项的详细说明如下:

  • 须藤 允许 寻找 命令搜索而不会遇到权限拒绝错误。
  • 寻找 搜索文件的命令(执行 男人找到 有关详细信息)。
  • / 从根目录开始搜索。
  • -type f 搜索文件(而非目录)。
  • -iname"*备份*" 在忽略案件时,指示 寻找 命令查找文件名中某处包含"备份"的所有文件。注意两者的使用(*)通配符角色。
  • -print0 格式的输出 寻找 命令使其可以被其他命令所消耗,包括 XARG。尤其是, -print0 允许包含新线或其他类型的空白的文件名,可以通过可以处理该输入的程序正确解释。请注意 -print0 选项对应于 -0 选项 Xargs 命令。
  • Xargs 将其标准输入转换为其他命令的参数,例如 统计CP 命令。
  • -0 准备 Xargs 命令接收可能包含空白,报价标记或背斜线的输入。
  • -我 资本" i"选项允许输入 Xargs 在多个地方使用,例如 {} 令牌。
  • SH -C 这将调用一个单独的命令行解释器(Shell)并执行传递给它的命令。在这种情况下, 'stat -c"%n%s字节" {};cp {}〜/备份'。第二个外壳允许 Xargs 使用多个命令使用 {} 令牌。
  • stat -c"%n%s字节" {} 显示名称 %n 和大小 %s{} 令牌(字节)。
  • ; 分号允许在同一行上执行两个或多个命令。
  • cp {}〜/备份 复制给定的 {} 文件到 〜/备份 目录。

将所有所有这些放在一起结果类似于以下的输出:

在以上,我们可以看到理论上复制到的所有文件 〜/备份。这是理论上的,并非所有文件实际上都被复制了:

这是一个重要的观点 - 在显示方面没有问题 统计 相关信息,但是有问题 CP 命令(未报告)。

使用GREP命令完善搜索

接下来,我们将搜索匹配文件的内容,以查找一个或多个关键字。首先,我们将检查所有 *。日志 出现的文件 警告。为此,我们使用无处不在 格雷普 命令:

sudo find / -iname '*.log' -type f -print0 | xargs -0 grep warning

在管道之前运行命令( | )操作员返回的预期列表 *.日志 文件。但是,运行整个命令行返回每个文件权限拒绝错误:


这是因为 格雷普 命令也需要 须藤 海拔。因此,以下命令行会产生所需的结果(两者都 -我的名字-一世 忽略案例):

sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo -i grep warning

找到所有 *。日志 包含文件 警告, 批判的,和/或 错误,我们可以使用逻辑或 | )操作员必须逃脱,以便不要与标准管操作员混淆:

sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo grep -l -i 'warning\|critical\|error'

小写的" L"选项 -l 显示匹配文件列表,而不是关联的内容:

结论

该教程比较并对比了Ubuntu 22.04 LTS中查找文件的多种方法。它还提供了在发现文件上执行命令的技术。包括Ubuntu在内的Unix式操作系统提供了极为丰富的命令线环境,可帮助您管理Ubuntu计算机/服务器。

撰写者 Karlito Bonnevie  /  六月 20, 2022