【Linux】操作文件和目录

简介

常见的一些对文件和目录操作的命令如下:

  • cp:复制文件和目录。
  • mv:移动/重命名文件和目录。
  • mkdir:创建目录。
  • rm:删除文件和目录。
  • ln:创建硬链接和符号链接。

用图形文件管理器来完成一些由这些命令执行的任务会更容易些。使用文 件管理器,我们可以把文件从一个目录拖放到另一个目录、剪贴和粘贴文件、删除文件等等。 那么,为什么还使用早期的命令行程序呢?

答案是命令行程序,功能强大灵活。虽然图形文件管理器能轻松地实现简单的文件操作,但是对于复杂的文件操作任务,则使用命令行程序比较容易完成。例如,怎样拷贝一个目录下所有的 HTML 文件——这些文件在目标目录不存在或者版本比目标目录的文件更新——到目标目录呢?要完成这个任务,使用文件管理器相当难,使用命令行相当容易,如下:

cp -u *.html destination

接下来进一步介绍通配符,以及各个命令的操作选项和实例。

通配符

shell 频繁地使用文件名,提供了特殊字符来帮助你快速指定一组文件名,这些特殊字符叫做通配符,使用通配符(也以文件名代换著称)允许你依据字符的组合模式来选择文件名。

通配符以及它们所选择的对象如下:

  • *:匹配任意多个字符(包括零个或一个)。
  • ?:匹配任意一个字符(不包括零个)。
  • [characters]:匹配任意一个属于字符集中的字符。
  • [!characters]:匹配任意一个不是字符集中的字符。
  • [[:class:]]:匹配任意一个属于指定字符类中的字符。

最常使用的字符类:

  • [:alnum:]:匹配任意一个字母或数字。
  • [:alpha:]:匹配任意一个字母。
  • [:digit:]:匹配任意一个数字。
  • [:lower:]:匹配任意一个小写字母。
  • [:upper:]:匹配任意一个大写字母

借助通配符,为文件名构建非常复杂的选择标准成为可能,下面是一些示例:

  • *:所有文件。
  • g*:文件名以“g”开头的文件。
  • b*.txt:以”b” 开头,中间有零个或任意多个字符,并以”.txt” 结尾 的文件。
  • Data???:以“Data”开头,其后紧接着 3 个字符的文件。
  • [abc]*:文件名以”a”,”b”, 或”c” 开头的文件
  • backup.[0-9][0-9][0-9]:以”backup.” 开头,并紧接着 3 个数字的文件
  • [[:upper:]]*:以大写字母开头的文件。
  • [![:digit:]]*:不以数字开头的文件。
  • [[:lower:]123]:文件名以小写字母结尾,或以“1”,“2”,或“3”结尾的文件。

创建目录

mkdir 命令是用来创建目录的

mkdir directory ...

在描述一个命令时,当有三个圆点跟在一个命令的参数后面,这意味着那个参数可以重复。

mkdir 对应的实例

  • mkdir dir1:创建一个名为 “dir1” 的目录。
  • mkdir dir1 dir2 dir3:创建三个目录,名为 dir1, dir2, dir3。

复制文件和目录

cp 命令,复制文件或者目录,它有两种使用方法:

  1. 复制单个文件或目录 “item1” 到文件或目录”item2”。
cp item1 item2
  1. 复制多个项目(文件或目录)到一个目录下。
cp item1 item2 ... directory

cp 命令一些有用的选项

  • -a/--archive:复制文件和目录,以及它们的属性,包括所有权和权限。通常,副本具有用户所操作文件的默认属性。
  • -i/--interactive:在重写已存在文件之前,提示用户确认。如果这个选项不指定,cp 命令会默认重写文件。
  • -r/--recursive:递归地复制目录及目录中的内容。当复制目录时,需要这个 选项(或者-a 选项)。
  • -u/--update:当把文件从一个目录复制到另一个目录时,仅复制目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。
  • -v/--verbose:显示详细的命令操作信息。

cp 对应的实例

  • cp file1 file2:复制文件 file1 内容到文件 file2。如果 file2 已经存在,file2 的内容会被 file1 的内容重写。如果 file2 不存在,则会创建 file2。
  • cp -i file1 file2:这条命令和上面的命令一样,除了如果文件 file2 存在的话, 在文件 file2 被重写之前,会提示用户确认信息。
  • cp file1 file2 dir1:复制文件 file1 和文件 file2 到目录 dir1。目录 dir1 必须存在。
  • cp dir1/* dir2:使用一个通配符,在目录 dir1 中的所有文件都被复制到目 录 dir2 中。dir2 必须已经存在。
  • cp -r dir1 dir2:复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在, 创建目录dir2,操作完成后,目录 dir2 中的内容和 dir1 中 的一样。如果目录 dir2 存在,则目录 dir1 (和目录中的内容) 将会被复制到 dir2 中。

移动和重命名文件

mv 命令可以执行文件移动和文件命名任务,这依赖于你怎样使用它。任何一种情况下,完成操作之后,原来的文件名不再存在。mv 使用方法与 cp 很相像。

  1. 把文件或目录“item1”移动或重命名为“item2”。
mv item1 item2
  1. 把一个或多个条目从一个目录移动到另一个目录中。
mv item... directory

mv 与cp 命令共享了许多一样的选项

  • -i/--interactive:在重写已存在文件之前,提示用户确认。如果这个选项不指定,mv 命令会默认重写文件。
  • -u/--update:当把文件从一个目录移动到另一个目录时,仅移动目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。
  • -v/--verbose:显示详细的命令操作信息。

mv 对应的实例:

  • mv file1 file2:移动 file1 到 file2。如果 file2 存在,它的内容会被 file1 的 内容重写。如果 file2 不存在,则创建 file2。这两种情况下, file1 都不再存在。
  • mv -i file1 file2:除了如果 file2 存在的话,在 file2 被重写之前,用户会得到提示信息外,这个和上面的选项一样。
  • mv file1 file2 dir1:移动 file1 和 file2 到目录 dir1 中。dir1 必须已经存在。
  • mv dir1 dir2:如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1 的内容到目录 dir2 中,同时删除目录 dir1。如果目录 dir2 存在,移动目录 dir1(及它的内容)到目录 dir2。

删除文件和目录

rm 命令用来移除(删除)文件和目录,“item” 代表一个或多个文件或目录

rm item...

普遍使用的 rm 选项如下:

  • -i/--interactive:在删除已存在的文件前,提示用户确认信息。如果不指定这个选项,rm 会默默地删除文件。
  • -r/--recursive:递归地删除文件,这意味着,如果要删除一个目录,而此目录又包含子目录,那么子目录也会被删除。要删除一个目 录,必须指定这个选项。
  • -f/--force:忽视不存在的文件,不显示提示信息。这选项覆盖了“-- interactive”选项。
  • -v/--verbose:显示详细的命令操作信息。

rm 对应的实例:

  • rm file1:默默地删除文件。
  • rm -i file1:除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。
  • rm -r file1 dir1:删除文件 file1, 目录 dir1,及 dir1 中的内容。
  • rm -rf file1 dir1:同上,除了如果文件 file1,或目录 dir1 不存在的话,rm 仍会继续执行。

创建链接

ln 命令既可创建硬链接,也可以创建符号链接。

创建硬链接,一个硬链接和文件本身没有什么区别。

ln file link

硬链接有两个重要局限性:

  • 一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联与链接本身不在同一个磁盘分区上的文件。
  • 一个硬链接不能关联一个目录。

创建符号链接,“item” 可以是一个文件或是一个目录。

ln -s item link

建立符号链接的目的是为了克服硬链接的两个缺点:硬链接不能跨越物理设备,硬链接不能关 联目录,只能是文件。符号链接是文件的特殊类型,它包含一个指向目标文件或目录的文本指针。

总结

操作文件和目录命令有多个,不过都是基本的单词缩写,大家可以随意通过添加文件和目录来拓展练习,也可以使用通配符来为各种各样的操作命令指定文件,这样才能够良好地理解基本文件操作命令和通配符,也能提高我们处理文件的效率。

你可能感兴趣的:(Linux,linux,运维,docker)