跳至内容

实验 3 - 常用系统工具

目标

完成此实验后,您将能够

  • 使用大多数 Linux 系统上找到的常用系统实用程序

完成此实验的估计时间:70 分钟

Linux 系统上找到的常用系统实用程序

什么是系统实用程序?

在 Linux 环境中,系统实用程序 是允许您管理、监控和优化操作系统运行的程序和命令。这些工具对于系统管理员、开发人员和高级用户至关重要,因为它们简化了文件管理、进程控制、网络配置等任务,以及更多。

与图形界面不同,许多实用程序都可以通过命令行访问,从而提供更大的灵活性、自动化和系统控制。

本实验中的练习涵盖了用户和管理员都需要熟悉的一些基本系统实用程序的用法。大多数命令用于导航和操作文件系统。文件系统由文件和目录组成。

这些练习将涵盖 –pwdcdlsrmmvftpcptouchmkdirfilecatfindlocate 实用程序的用法。

练习

1. 使用 cd 进行文件系统导航

cd 命令(Change Directory 的缩写)是 Linux 和类 Unix 系统中最常用的命令之一。它允许您在文件系统中移动目录,使用户能够在文件夹之间导航并访问其中的文件。
cd 命令对于在 Linux shell 中工作至关重要,因为它允许您高效地浏览和组织文件系统。

如何使用 cd

  1. 以 root 用户身份登录计算机

  2. 从当前目录更改到 /etc 目录。

    [root@localhost root]# cd /etc
    
  3. 请注意,您的提示符已从“ [root@localhost root]# ”更改为:“ [root@localhost etc]# ”

  4. 更改到 /usr/local/ 目录

    [root@localhost etc]# cd /usr/local
    
    [root@localhost local]#
    

    问题

    您的提示符发生了什么变化?

  5. 返回 root 的主目录

    [root@localhost local]# cd /root
    
  6. 再次更改到 /usr/local/ 目录。输入

    [root@localhost root]# cd /usr/local
    
  7. 要更改到 local 目录的父目录,请输入 cd ..

    [root@localhost local]# cd ..
    

    问题

    /usr/local/ 目录的父目录是什么?

  8. 要快速返回 root 的主目录,请在不带任何参数的情况下键入 cd

    [root@localhost usr]# cd
    [root@localhost root]#
    

2. 使用 pwd 显示路径

pwdPresent Working Directory)命令向用户显示在文件系统中当前目录的绝对路径。当您在终端中工作并想确切知道自己的位置时,可以使用它来标识当前位置。
此命令对于导航文件系统至关重要,尤其是在处理复杂路径或自动化脚本时。

如何使用 pwd

  1. 要找出您当前的活动目录,请输入

    [root@localhost root]# pwd
    /root
    
  2. 使用 cd 命令将您的目录更改到 /usr/local/ 目录

    [root@localhost root]# cd /usr/local
    
  3. 使用 pwd 找出您当前的活动目录

    [root@localhost local]# pwd
    /usr/local
    
  4. 返回 root 的主目录

    [root@localhost root]# cd
    

3. 使用 mkdir 创建文件夹

mkdirMake Directory)命令允许您在文件系统中创建新的目录(文件夹)。在此练习中,您将创建两个名为 folder1folder2 的文件夹。

如何使用 mkdir

  1. 创建第一个名为 folder1 的目录

    [root@localhost root]# mkdir folder1
    
  2. 创建第二个名为 folder2 的目录

    [root@localhost root]# mkdir folder2
    
  3. 现在将您的活动目录更改为您上面创建的 folder1 目录。

    [root@localhost root]# cd folder1
    
  4. 显示您当前的活动目录。

    [root@localhost folder1]# pwd
    /root/folder1
    

    问题

    在不离开当前目录的情况下,更改到 folder2 目录。为此的命令是什么?

  5. 返回 root 的主目录。

4. 使用 touch 修改文件元数据

touch 命令是一个工具,它允许您创建新的空文件或修改现有文件的访问/修改日期,以及用于脚本编写和自动化的高级用途。名称 touch 来自“接触”文件元数据的想法,而不必修改其内容。
文件 file11file12file21file22 将在上面创建的文件夹中创建。

如何使用 touch

  1. 更改目录,即 cdfolder1 并创建 file11

    [root@localhost folder1]# touch file11
    
  2. 仍在 folder1 中创建 file12

    [root@localhost folder1]# touch file12
    
  3. 现在返回 root 的主目录。

  4. cdfolder2 并创建 file21file22

    [root@localhost folder2]# touch file21 file22
    
  5. 返回 root 的主目录。

5. 使用 ls 列出目录

ls 命令(List)是 Linux 和类 Unix 系统中最基本、最广泛使用的命令之一。它允许您查看目录的内容,以各种格式和排序选项显示文件和子目录。

使用 ls

  1. 在 root 的主目录中键入 ls

    [root@localhost root]# ls
    

    问题

    列出目录的内容

  2. 更改到 folder1 目录

  3. 列出 folder1 目录的内容。键入 ls

    [root@localhost folder1]# ls
    file11  file12
    
  4. 更改到 folder2 目录并在此列出其内容

  5. 返回您的主目录并列出 所有 隐藏文件和文件夹

    [root@localhost folder2]# cd
    [root@localhost root]# ls –a
    ..  .bash_history  .bash_logout  .bash_profile  .bashrc  folder1  folder2  .gtkrc  .kde   screenrc
    
  6. 要获得您主目录中所有文件和文件夹的长列表或详细列表,请输入

    [root@localhost root]# ls –al
    total 44
    drwx------    5 root    root        4096 May  8 10:15 .
    drwxr-xr-x    8 root     root         4096 May  8 09:44 ..
    -rw-------    1 root    root          43 May  8 09:48 .bash_history
    -rw-r--r--    1 root    root          24 May  8 09:44 .bash_logout
    -rw-r--r--    1 root    root         191 May  8 09:44 .bash_profile
    -rw-r--r--    1 root    root         124 May  8 09:44 .bashrc
    drwxrwxr-x    2 root    root        4096 May  8 10:17 folder1
    drwxrwxr-x    2 root    root        4096 May  8 10:18 folder2
    ………………………..
    

6. 使用 mv 移动文件

mvMove)命令提供了用于管理系统文件的工具。其主要功能是在文件系统中移动或重命名文件和目录。此命令对于重新组织目录结构、对文件组执行批量操作以及高效管理备份特别有用。

如何使用 mv

  1. 更改目录到 folder1 目录并列出其内容

    [root@localhost root]# cd folder1
    [root@localhost folder1] ls
    file11  file12
    
  2. 您将把 folder1 目录中的 file11file12 分别重命名为 temp_file11temp_file12

    [root@localhost folder1]# mv file11 temp_file11
    
  3. 再次列出 folder1 的内容。

    [root@localhost folder1]# ls
    

    问题

    写下内容

  4. file12 重命名为 temp_file12

    [root@localhost folder1]# mv file12 temp_file12
    
  5. 在不更改目录的情况下,将 folder2 中的 file21file22 分别重命名为 temp_file21temp_file22

    [root@localhost folder1]# mv /root/folder2/file21 /root/folder2/temp_file21
    [root@localhost folder1]# mv /root/folder2/file22 /root/folder2/temp_file22
    
  6. 在不更改当前目录的情况下,列出 folder2 的内容。

    问题

    为此的命令是什么?也要列出命令的输出吗?

7. 使用 cp 复制文件

cpCopy)命令允许您在文件系统中将文件和目录从一个位置复制到另一个位置,同时保持原始文件不变。其易用性和多功能性使其成为日常操作和更复杂的系统管理任务不可或缺的工具。
cp 命令最实用的功能之一是能够在复制过程中保留文件的原始属性,包括权限时间戳所有者信息。此功能在处理配置文件或需要保持某些文档属性不变时尤其重要。

如何使用 cp

  1. 将您的目录更改为 folder2 目录。

  2. folder2 的内容(temp_file21temp_file22)复制到 folder1

    [root@localhost folder2]# cp temp_file21 temp_file22 ../folder1
    
  3. 列出 folder1 的内容。

    [root@localhost folder2]# ls ../folder1
    temp_file11  temp_file12  temp_file21  temp_file22
    
  4. 列出 folder2 的内容。请注意,temp_file21temp_file22 的原始副本仍保留在 folder2 中。

    [root@localhost folder2]# ls
    temp_file21  temp_file22
    

8. 使用 file 确定文件类型

file 命令是一个诊断工具,它允许您通过分析文件的内容来确定文件的类型。与可以修改或具有误导性的文件扩展名不同,此命令会检查数据的实际结构以准确识别其性质。
file 命令最重要的功能之一是它能够区分不同类型的文本文件,例如识别 shell 脚本、各种编程语言的源代码、XML 或 JSON 文件。对于二进制文件,它可以识别可执行文件、共享库、各种格式的图像以及许多其他类型的结构化数据。

如何使用 file

  1. 返回您的主目录。

  2. 要查看 folder1 是文件还是目录;请输入

    [root@localhost root]# file folder1
    folder1: directory
    
  3. 更改到 folder1 目录

  4. 使用 file 实用程序确定 temp_file11 的文件类型

    [root@localhost folder1]# file temp_file11
    temp_file11: empty
    
  5. 使用 file 实用程序找出 folder1 目录中所有文件的文件类型。在此列出

  6. 更改目录到 /etc 目录

    [root@localhost folder1]# cd /etc
    
  7. 使用 file 实用程序找出 passwd 文件的文件类型。

    [root@localhost etc]# file passwd
    

    问题

    它是什么类型的文件?

9. 使用 cat 列出和连接文件

cat 命令(Concatenate 的缩写)是 Linux 中管理文本文件的重要工具。其主要功能是将一个或多个文件的内容直接显示在终端中,但它也可以用于创建、合并或复制文件。
cat 命令特别适用于与其他工具(如 grepmore)结合使用,直接从终端处理或过滤文本。尽管它很简单,但它是用于快速文件操作的最广泛使用的命令之一。
您将使用 cat 结合重定向符号“>”来创建一个文件。

使用 cat 创建文件

  1. 更改目录到 /root/folder1 目录

  2. 创建一个名为 first.txt 的新文本文件

    [root@localhost folder1]# cat > first.txt
    
  3. 在空白提示符处输入以下短语,然后按 Enter

    This is a line from first.txt !!
    
  4. 同时按 Ctrl+C

  5. 键入 cat first.txt 来读取您刚才键入的文本

    [root@localhost folder1]# cat first.txt
    This is a line from first.txt !!
    
  6. 使用 cat 创建另一个名为 second.txt 的文件。将以下文本输入文件 – “This is a line from second.txt !!”

    问题

    为此的命令是什么?

使用 cat 连接文件

  1. 您将连接 first.txtsecond.txt 文件。键入

    [root@localhost folder1]# cat first.txt second.txt
    

    问题

    您的输出是什么?

10. 使用 ftp 传输文件

ftp(File Transfer Protocol)命令是一个命令行工具,用于在远程系统和本地系统之间传输文件。虽然它已被 SFTPSCP 等更现代、更安全的协议部分取代,但在旧环境或仅支持 FTP 的服务器上仍然有用。
FTP 以明文传输数据,包括凭据和内容,因此不建议用于敏感传输。
虽然 FTP 仍在某些环境中使用,但加密协议在安全操作中更受青睐。
在此练习中,您将学习如何匿名登录 FTP 服务器并使用ftp 客户端程序从服务器下载文件。

注意

您需要完成之前实验中的练习才能在此特定练习中进行操作,该练习需要一个可用的 FTP 服务器在可访问的某处运行。

如何使用 ftp

  1. 以 root 用户身份登录您的计算机

  2. 更改目录到 /usr/local/src/ 目录

  3. /usr/local/src/ 目录下创建一个名为 downloads 的新目录。

    问题

    为此的命令是什么?

  4. 更改目录到新创建的 downloads 目录

    [root@localhost src]# cd downloads
    
  5. 键入 ftp 以启动您的ftp 客户端

    [root@localhost downloads]# ftp
    ftp>
    
  6. 要连接到 FTP 服务器,请输入

    ftp> open  < server-address>    (Obtain the <server-address> from your instructor)
    ………
    220 localhost.localdomain FTP server (Version wu-2.6.2-5) ready.
    ………..
    
  7. 以匿名用户身份登录。在提示符处键入“anonymous

    Name (10.4.51.29:root):  anonymous
    
  8. 在密码提示符处键入任何电子邮件地址,然后按 Enter

    Password: ***************
    230 Guest login ok, access restrictions apply.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp>
    
  9. 切换到二进制模式。键入

    ftp> binary
    

    问题

    二进制命令的输出是什么?“二进制模式”又是什么?

  10. 列出 FTP 服务器上的当前目录。在ftp 提示符处键入 ls

    ftp> ls
    227 Entering Passive Mode (10,0,4,5,16,103).
    125 Data connection already open; Transfer starting.
    11-23-43  10:23PM       <DIR>          images
    11-02-43  02:20PM       <DIR>          pub
    226 Transfer complete.
    
  11. 更改目录到 pub 目录。键入

    ftp> cd  pub
    
  12. 使用 ls 命令列出 pub 目录中的文件和目录

    问题

    现在里面有多少文件和目录?

  13. 将名为“hello-2.1.1.tar.gz”的文件下载到您的本地目录。在提示符处键入“yes”。

    ftp> mget hello-2.1.1.tar.gz
    mget hello-2.1.1.tar.gz? yes
    227 Entering Passive Mode (10,0,4,5,16,252).
    125 Data connection already open; Transfer starting.
    226 Transfer complete.
    389363 bytes received in 0.0745 secs (5.1e+03 Kbytes/sec)
    
  14. 注销 FTP 服务器并退出您的ftp 客户端。键入

    ftp> bye
    
  15. 您将被返回到本地 shell。

  16. 确保您仍然在本地计算机的 downloads 目录中。

    问题

    列出 downloads 文件夹中的文件。

11. 使用重定向

您在 Linux 中使用的绝大多数实用程序和命令都将其输出发送到屏幕。屏幕称为标准输出 (stdout)。重定向允许您将输出发送到别处 – 也许是一个文件。

在 Linux 系统上启动的每个程序都有三个打开的文件描述符:stdin (0)、stdout (1) 和 stderr (2)。您可以单独重定向或“管道”它们。重定向符号是 ><

如何使用重定向

  1. 确保您仍在 folder1 目录中。

  2. 您将使用输出重定向将 lslist)命令的输出重定向到一个名为 myredirects 的文本文件

    [root@localhost folder1]# ls > myredirects
    
  3. 检查在 folder1 目录中创建的新文件(myredirects)的内容。

    [root@localhost folder1] # cat myredirects
    temp_file11  temp_file12  temp_file21  temp_file22 myredirects
    
  4. 现在您将 file 命令的输出重定向到同一个文件。您想找出 folder1 目录中 temp_file11 的文件类型,并将输出发送到您的 myredirects 文件

    [root@localhost folder1]# file temp_file11 > myredirects
    
  5. 检查 myredirects 文件内容。

    问题

    它已更改。发生了什么?

  6. 如果您希望阻止上面发生的事情,您将使用双重重定向符号 >+>。这将附加(添加)新输出到文件,而不是替换它。试试吧

    [root@localhost folder1]# ls >> myredirects
    
  7. 现在使用 cat 再次检查 myredirects 文件内容。

    问题

    在此处写下其内容

使用重定向抑制命令的输出

您将在 Linux 中大量使用此处涵盖的概念,因此请特别注意。它可能有点棘手。

有时您不希望用户看到命令的输出 – 也许是一个错误消息。这通常是因为奇怪的错误消息经常会吓到普通用户。在此练习中,您将把命令的输出发送到空设备/dev/null/)。空设备就像一个“垃圾桶”。您放入其中的任何内容都会永远消失。您也可以将常规命令输出发送(或重定向)到空设备

使用下面的指南

重定向符 功能
> 文件 将标准输出重定向到文件
< 文件 从文件获取标准输入
Cmd1 | cmd2 管道;将 cmd1 的标准输出作为 cmd2 的标准输入
n> 文件 将文件描述符 n 重定向到文件
N< 文件 将文件设置为文件描述符 n
>&n 将标准输出复制到文件描述符 n
<&n 将标准输入从文件描述符 n 复制
&>文件 将标准输出和标准错误重定向到文件
  1. 确保您仍在 folder1 目录中。使用 ls 命令的长列表选项对 temp_file11 进行操作

    [root@localhost folder1]# ls –l temp_file11
    -rw-r--r-- 1 root   root    0   Jul 26 18:26    temp_file11
    
  2. 您将把上面相同的命令(ls –l temp_file11)的输出重定向到空设备。

    [root@localhost folder1]# ls –l temp_file11 > /dev/null
    

    您应该没有任何输出。

  3. 现在,如果您不小心拼错您想查看信息的文件的名称;您将得到

    [root@localhost folder1]# ls –l te_file1
    ls: te_file1: No such file or directory
    

    以上是 ls 命令被编程为产生的错误类型的结果。

  4. 运行与上面相同的命令,但文件名称拼写错误,并将其重定向到 /dev/null

    [root@localhost folder1]# ls -l te_file1 > /dev/null
    ls: te_file1: No such file or directory
    

    问题

    这里发生了什么?为什么输出仍然显示在屏幕上(stdout)?

  5. 出于各种原因,您可能不希望用户看到错误消息,例如上面的消息。为此,请输入

    [root@localhost folder1]# ls –l te_file1 > /dev/null 2>&1
    

    您将不会收到任何输出。这次标准输出和标准错误都被抑制了。

    重定向的顺序很重要!

    重定向从命令行从左到右读取。重定向符号的左侧部分 – > 将标准输出(stdout)发送到 /dev/null。然后,重定向的右侧部分 – 2>&1 将标准错误(2)复制到标准输出(1)

    因此,上面的命令可以读作:将 stdout(1) 重定向到“/dev/null”,然后将 stderr (2) 复制到 stdout

  6. 为了进一步说明重定向顺序的重要性;尝试

    [root@localhost folder1]# ls –l tem_file 2>&1 > order.txt
    

    使用 cat 命令检查“order.txt”文件的内容

    左侧部分 – 2>&1 将标准错误复制到标准输出。然后,上面的右侧部分 – > order.txtstdout重定向到文件 order.txt

  7. 尝试上面的步骤的这个变体

    [root@localhost folder1]# ls –l hgh_ghz 2> order2.txt > order2.txt
    

    问题

    检查文件“order2.txt”并解释发生了什么?

  8. 要将标准输出和标准错误发送到不同的文件;请输入

    [root@localhost folder1]# ls –l tep_f > standard_out 2> standard_err
    

    问题

    创建了两个新文件。文件的名称是什么?它们的内容是什么?

  9. 您也可以通过使用以下命令将 stdout 和 stderr 都重定向到同一个文件

    [root@localhost folder1]# ls –l te_fil &> standard_both
    

12. 使用 rm 删除文件

rm(Remove)命令允许您永久删除一个或多个文件、目录及其内容,除非使用外部恢复解决方案,否则无法恢复。它是一个功能强大的命令,但如果使用不当,可能会有危险,因为它操作不可逆。因此,务必谨慎使用它,在执行操作之前始终检查路径和文件名。
您将使用 rm 删除一些在早期练习中创建的文件。

如何使用 rm

  1. 仍在 folder1 目录中时,删除文件 standard_err。在确认提示符处键入 y

    [root@localhost folder1]# rm standard_err
    rm: remove `standard_err'? y
    
  2. 删除 standard_out 文件。要避免在删除文件前提示确认,请在 rm 命令中使用 –f 选项

    [root@localhost folder1]# rm -f standard_out
    
  3. 返回您的主目录(/root)并删除 folder2 目录。要使用 rm 删除文件夹,您需要使用 –r 开关

    [root@localhost root]# rm -r folder2
    rm: descend into directory 'folder2'? y
    rm: remove 'folder2/temp_file21'? y
    rm: remove 'folder2/temp_file22'? y
    rm: remove directory 'folder2'? y
    

    问题

    您再次被提示确认删除目录中的每个文件以及目录本身。要防止这种情况发生,您将使用哪个选项与 rm –r 命令一起使用?

13. 学习 vi

vi 编辑器是 Linux 和类 Unix 系统中最强大、最广泛使用的文本编辑器之一。由于其效率和多功能性,它是系统管理员和开发人员必不可少的工具。与许多现代编辑器不同,vi 主要在文本模式下运行,提供快速的命令和键盘组合,让您能够以极高的精度和速度编辑文件。

它的学习曲线起初可能很陡峭,但一旦您掌握了基本功能,它就会成为从终端直接编辑配置文件、脚本和源代码的不可或缺的工具。

vi 是一个巨大的怪物,几乎无所不能——甚至可以为你泡咖啡或可可!

本练习不尝试教您 vi,而是为您推荐一个工具,该工具可以更好地让您熟悉 vi。请花时间完成在线 vi(更准确地说,是 vim)教程。只需按照说明操作。

学习 vi

  1. 登录系统时,键入

    [root@localhost root]# vimtutor

14. 使用 findlocate 搜索文件

本练习将讨论用于在文件系统中搜索文件和目录的两个最受欢迎的实用程序。它们是 find 命令和 locate 命令。

find

find 命令允许您根据各种标准(如名称、类型、大小、修改日期、权限等)在文件系统中搜索文件和目录。它能够对找到的结果执行操作(如删除、移动或处理文件),这使其成为系统管理员和高级用户的不可或缺的工具。

find 的一般语法是

find   [path]    [options]   [criterion]    [action]

如果您不指定任何目录或路径,find 将搜索当前目录。如果您不指定标准,这等同于“true”,因此将找到所有文件。find 实用程序有许多选项可用于执行几乎任何类型的查找文件操作。下面仅列出其中一些选项、标准和操作。

选项 描述
-xdev 不在其他文件系统上的目录中搜索
-mindepth <n> 在搜索文件之前,至少向下进入指定目录 <n>
-maxdepth <n> 搜索位于指定目录以下最多 <n> 层的文件
-follow 如果符号链接指向目录,则跟随它们
-daystart 在使用与时间相关的测试(见下文)时,它以当天开始作为时间戳,而不是默认值(当前时间前 24 小时)
标准 描述
-type <type> 搜索给定类型的文件;<type> 可以是:f常规文件)、d目录)、l符号链接)、s套接字)、b块设备文件)、c字符设备文件)或 p命名管道
-name <pattern> 查找名称匹配给定 <pattern> 的文件
-iname <pattern> -name 类似,但忽略大小写
-atime <n>, -amin <n> 查找最后一次访问时间为 <n> 天前(-atime)或 <n> 分钟前(-amin)的文件。您还可以指定 +<n>-<n>,在这种情况下,搜索将分别针对访问时间最多至少 <n> 天/分钟前的文件
-anewer <file> 查找比文件 <file> 更近期被访问过的文件
-ctime <n>, -cmin <n>, -cnewer <file> -atime-amin-anewer 相同,但适用于最后一次修改文件内容的时间
-regex <pattern> -name 相同,但模式被视为正则表达式
-iregex <pattern> -regex 相同,但忽略大小写
操作 描述
-print 仅将每个文件的名称打印到标准输出。这是默认操作
-ls 将找到的每个文件的 ls -ilds 的等效输出打印到标准输出
-exec <command> 对找到的每个文件执行命令 <command>。命令行的 <command> 必须以 ; 结尾,您必须对其进行转义,以便 shell 不会对其进行解释;文件位置用 {} 标记
-ok <command> -exec 相同,但会询问每个命令的确认

如何使用 find

  1. 确保您在主目录中。

  2. 您将使用 find 来显示当前目录(pwd)中的所有文件。键入

    [root@localhost root]# find
    ………..
    ./.bash_profile
    ./.bashrc
    ./.cshrc
    ./.tcshrc
    ./.viminfo
    ./folder1
    ./folder1/first.txt
    …………
    

    您的输出显示了 find 在没有选项时使用的默认行为。
    它递归地显示工作目录中的所有文件和目录(包括隐藏文件)。

  3. 现在使用 find 仅查找 pwd 中的目录。键入

    [root@localhost root]# find -type d
    ./folder1
    ./folder2
    ………
    

    问题

    从上面的命令 find –type d;“选项”是什么,“路径”是什么,“标准”是什么,最后“操作”又是什么?

  4. 接下来,您将搜索系统上所有以“.txt”后缀结尾的文件

    [root@localhost root]# find / -maxdepth 3 -name "*.txt" -print
    /root/folder1/first.txt
    /root/folder1/second.txt
    /root/folder1/order.txt
    /root/folder1/order2.txt
    

    问题

    再次从上面的命令;“选项”是什么,“路径”是什么,“标准”是什么,最后“操作”又是什么?(提示:操作 = “-print”)

    搜索将只在 / 目录向下进行 3 层。上面命令中使用的星号是 Linux 中“通配符”字符之一。
    在 Linux 中使用通配符称为“globbing”。

  5. 使用 find 命令查找 pwd 中所有“小于” 200 KB 的文件。键入

    [root@localhost root]# find . –size -200k
    
  6. 使用 find 命令查找 pwd 中所有“大于” 10 KB 的文件,并显示它们的“文件类型”。键入

    [root@localhost root]#  find . –size +10k –exec file "{ }" ";"
    

locate

locate 命令允许您在系统中搜索文件和目录。与其他命令(如 find,它执行实时搜索)不同,locate 基于一个预编译的数据库,其中包含系统上所有文件的路径,从而确保几乎即时获得结果。此数据库通常使用 updatedb 命令定期更新,该命令由 cron 作业管理。由于其效率,locate 对于快速查找文件或文件夹而无需手动扫描整个文件系统特别有用。
但是,需要记住的是,如果数据库没有最近与系统当前状态同步,结果可能不是最新的。

搜索用法
locate [-qi] [-d <path>] [--database=<path>] <search string>...
locate [-r <regexp>] [--regexp=<regexp>]
数据库用法
locate [-qv] [-o <file>] [--output=<file>]
locate [-e <dir1,dir2,...>] [-f <fs_type1,...>] [-l <level>] [-c] [-U <path>] [-u] [pattern...]
通用用法
locate [-Vh] [--version] [--help]

如何使用 locate

  1. 切换到 folder1 目录并创建空文件 temp1temp2temp3

    [root@localhost root]# cd folder1; touch temp1 temp2 temp3
    [root@localhost folder1]#
    

    上面命令中使用的分号 (;) 允许您在一行中执行多个命令!

  2. 使用 locate 搜索 pwd 中所有带有“temp”后缀的文件

    [root@localhost folder1]# locate temp*
    /root/folder1/temp_file11
    /root/folder1/temp_file12
    /root/folder1/temp_file21
    /root/folder1/temp_file22
    

    请注意,您在步骤 1 中创建的三个文件找到。

  3. 您将强制使用 updatedb 更新数据库,使其能够识别所有新创建的文件。键入

    [root@localhost folder1]# updatedb
    
  4. 现在再次尝试搜索。键入

    [root@localhost folder1]# locate temp
    

    问题

    这次发生了什么?

  5. 实验 3 全部完成。

作者:Wale Soyinka

贡献者:Steven Spencer, Ganna Zhyrnova, Franco Colussi