第 7 章。 使用文件系统

目录
在文件系统中移动
使用文件和文件夹
批量重命名/复制/链接工具

使用文件系统 章节解释了许多 命令,您可以使用这些命令在文件系统 层级结构中移动 和操作 文件。还解释了如何查找 文件以及如何批量重命名 文件。

在文件系统中移动

cd

更改目录。使用 “ cd ..” 返回上一级目录。

一个点 '.' 代表 当前目录 ,而两个点 '..' 代表 父目录。

“ cd -” 将返回 您到上一个 目录(有点像“撤销”)。

您也可以使用 cd 绝对路径cd 相对路径 (见下文)

绝对路径

“ 绝对路径”很容易从前导 正斜杠 / 中识别出来。/ 表示您从 顶层目录开始并向下继续。

例如,要进入 /boot/grub ,您需要输入

cd /boot/grub

这是一个绝对路径,因为您从层级结构的顶部开始并从那里向下 移动(这与您在输入命令时位于文件系统 中的位置无关)。

相对路径

“ 相对路径”没有前导 斜杠。当您从低于顶层 目录结构的目录开始时,请使用相对路径。这取决于 您在文件系统中的位置。

例如 ,如果您在 root 的主 目录中,并且想要进入 /root/music,则输入

cd music

请注意,使用上面的 cd 命令时,没有 /。使用 / 将导致 其成为绝对 路径, 从层级结构的顶部 向下工作。

ls

列出文件和目录。 输入 “ls” 将列出 文件和目录,但不会列出隐藏的 文件或目录, 这些文件或目录以句点 “.” 开头

示例选项

  • ls -l --- 长 格式, 这会列出 权限、文件大小、 修改 日期、 所有权。

  • ls -a --- 表示 “显示所有”,这会显示 隐藏 文件,默认情况下, 任何以 '.' 开头的 文件或目录 都不会显示。

  • ls -d --- 列出目录条目而不是内容 (见下面的例子)

  • ls -F --- 符号 附加到特定文件,例如 *(星号)用于可执行 文件。

  • ls -S --- 按大小 对命令的输出进行降序 排序。

  • ls -R --- (递归)列出目录中 的所有内容以及当前目录。

命令语法,可以是

ls -options

这只是简单地列出当前目录中的所有内容,选项 不是必需的 (例如 -l-a 等选项)。

ls -options string

这将使用特定字符串列出文件。该字符串 可以包含标准通配符 以列出多个文件,要了解 关于标准通配符的更多信息,请阅读 第 20 章中名为标准通配符(globbing 模式)的章节

您可以使用 ls -d 来显示 与精确 字符串匹配的 目录,或使用标准通配符。输入 “ ls -d */” 以列出当前目录的所有子目录 。根据 您的别名设置 (请参阅 第 4 章),您可能只需输入 lsd 即可,这等效于 ls -d */

ls -d 的示例

ls -d */

列出当前目录的所有子目录

ls -d string*

列出以 “string” 开头的目录。

ls -d /usr/*/*/doc

列出 /usr/ 目录下方两级 的所有目录,并且这些目录中有一个名为 “doc” 的目录,这个技巧 有时会非常方便。

您也可以使用:根据您的别名(请参阅 第 4 章)的设置方式,您也可以使用 lla (列出所有)和 ll (长列表)来执行上述命令

pwd

打印工作目录。 打印用户当前所在目录的 绝对 (完整)路径。

命令语法

pwd

这将告诉您您所在目录的完整路径 ,例如,如果您当前在该目录中,它可能会输出 “/usr/local/bin”。

tree

输出 一个 ASCII 文本树/图, 从给定的目录开始(默认情况下为 当前 目录)。此命令递归地列出 所有文件和所有目录。

换句话说,它将列出当前目录下的目录 中的文件,以及当前目录中的所有文件。

tree 有大量选项,请参阅 手册 以获取详细信息。

命令语法

tree

tree -option(s) /optional/directory/to/list

查找文件

find

find 是一个在文件系统中查找 文件的工具。 find 有大量 选项,可以用来定制 搜索 (请参阅手册/信息页)。

请注意,find 可以与标准通配符一起使用,第 20 章中名为标准通配符(globbing 模式)的章节,并且可以与正则表达式 一起使用,第 20 章中名为正则表达式的章节

基本 示例

find / -name file

这将查找 名为 “file” 的文件,并从根目录 开始(它将搜索所有目录,包括 那些已挂载的 文件系统)。

`-name' 选项 区分大小写, 您可以使用 `-iname' 选项来查找不区分 大小写的内容。

使用 '-regex''-iregex' 根据正则表达式查找内容(分别区分大小写 或不区分大小写)。

'-exec' 选项是更高级的 find 操作之一。 它对找到的文件执行命令 (例如移动 或删除 它或任何其他操作...)。

要使用 -exec 选项:使用 find 查找内容,然后在末尾添加 -exec 选项, 然后

command_to_be_executed (1)  then '{}' (curly brackets) (2) then the arguments (for example a new directory)  and finally a ';' (3). 

请参阅下面使用此命令的示例。

(1)
这是您想要在 find 找到的文件上执行的工具。例如,如果您想删除它找到的所有内容,那么您将使用 -exec rm -f
(2)
花括号在 find 中用于表示已找到的当前文件。即,如果它找到了文件 shopping.doc,那么 {} 将被 shopping.doc 替换。然后它将继续为它找到的每个文件替换 {}。花括号通常用反斜杠 (\) 或单引号 (') 保护,以阻止 bash 扩展它们(试图将它们解释为特殊命令,例如通配符)。
(3)
这是 find 用来表示命令结束的符号。它通常用反斜杠 (\) 或引号保护,以阻止 bash 尝试扩展它。
find / -name '*.doc' -exec cp '{}' /tmp/ ';'

上面的命令将查找 任何扩展名为 '.doc' 的文件,并将它们复制 到您的 /tmp 目录,显然这个命令非常无用,这只是 find 可以做什么的一个示例。请注意,引号 在那里是为了阻止 bash 尝试将其他字符 解释为某些东西。

使用 find 排除 特定文件夹 可能非常 令人困惑,但如果您想搜索主磁盘 (而不搜索 每个已挂载的 文件系统),这可能是必要的。使用 -path 选项来排除 特定文件夹(请注意,末尾不能有 '/' (正斜杠)),并使用 -prune 选项来排除 子目录。 下面是一个例子

find / -path '/mnt/win_c' -prune -o -name "string" -print

此示例将搜索您的整个目录树(挂载在其下的所有内容),排除 /mnt/win_c 以及 /mnt/win_c 下的所有子目录 。使用 -path 选项时,您可以使用通配符。

请注意,如果您愿意,可以添加 更多 -path '/directory' 语句。

find 有许多不同的 选项,请参阅 手册(和 info)页 以获取更多 详细信息。

slocate

slocate 输出 系统上与模式匹配 的所有文件的列表, 并给出它们的完整路径 名称(它不必是完全 匹配,任何包含该单词的内容都会显示)。

替换 locateSecure locate 是 locate 的替代品,两者都具有相同的语法。在大多数发行版上,locate 是 slocate 的别名。

命令 语法:

slocate string

除非满足以下条件,否则这将不起作用:您需要运行 updatedb (作为 root)或 slocate -u (作为 root)才能使 slocate 工作。

whereis

whereis 查找 特定程序的二进制文件、 源代码、 和手册页,它仅使用精确 匹配,如果您只知道名称的一部分,请使用 slocate

命令语法

whereis program_name
which

实际上与 whereis 相同, 只是它只查找 可执行文件 (物理 程序)。它只在用户的 shell 的 PATH (环境变量)中查找。

使用 -a 选项列出路径 中特定 program_name 的所有出现位置 (因此,如果存在多个,您可以查看)。

命令语法

which program_name