【Linux】操作文件和目录

简介: 【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

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

总结

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

相关文章
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
77 3
|
1月前
|
存储 Linux Windows
linux常用目录
/sbin s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一版该目录名是以用户的账号命名的。 /root 该目录为系统管理员,也称为超级权限者的用户主目录。 /lib 系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 /etc 所有的系统管理所需要的配置文件和子目录。 /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fies目录。 /bo
36 2
|
2月前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
309 5
|
4天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
29 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
25天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
89 3
|
29天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下文件数量是常见的需求。本文介绍了四种方法:使用 `ls` 和 `wc` 组合、`find` 命令、`tree` 命令以及编程实现(如 Python)。每种方法都附有详细说明和示例,适合不同水平的用户学习和使用。掌握这些技巧,可以有效提升系统管理和日常使用的效率。
276 6
|
26天前
|
分布式计算 Java Hadoop
linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
通过以上步骤,可以有效地解决 `HADOOP_HOME`和 `JAVA_HOME`删除后依然指向旧目录的问题。确保在所有相关的配置文件中正确设置和删除环境变量,并刷新当前会话,使更改生效。通过这些措施,能够确保系统环境变量的正确性和一致性。
25 1
|
1月前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
41 5
|
1月前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
48 6
|
1月前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
78 6