【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

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

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/229977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Debezium发布历史11

原文地址: https://debezium.io/blog/2016/10/25/Debezium-0-3-4-Released/ Debezium 0.3.4 发布 2016 年 10 月 25 日 作者: Randall Hauch 发布 mysql docker 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考&…

链表基础知识(二、双向链表头插、尾插、头删、尾删、查找、删除、插入)

目录 一、双向链表的概念 二、 双向链表的优缺点分析​与对比 2.1双向链表特点: 2.2双链表的优劣: 2.3循环链表的优劣 2.4 顺序表和双向链表的优缺点分析​ 三、带头双向循环链表增删改查实现 3.1SList.c 3.2创建一个新节点、头节点 3.3头插 3.…

C# WPF上位机开发(知识产权ip保护)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 上位机软件如果是和硬件模块搭配开发,这个时候大部分上位机基本上都是白送的,不会收取相关的费用。但是,如果上…

计算机网络基础——以太网类型,常见标准和架构

一、标准以太网 标准以太网(10Mbit/s)通常只定位在网络的接入层,新一代多媒体、影像和数据库产品很容易将10Mbit/s运行的以太网的带宽吞没。10Mbit/s 的以太网可以实现100m距离的连接。 二、快速以太网 数据传输速率为100Mbps 的快速以太网…

提示工程指南

大家好,欢迎来到本课程。在接下来的时间里,我们将一起学习如何使用 OpenAI 的提示工程指南来更有效地使用大语言模型。 目录 什么是提示工程?提示工程的原则提示工程的技巧提示工程的最佳实践提示工程的常见问题什么是提示工程? 提示工程是指设计和编写提示语以获得所需输…

项目遇到Bug如何解决(思路)

找到Bug,分析Bug,解决Bug 语法错误 ESLint:代码规则约束检测的操作,利用ESLint可以更好的帮助我们避免一些语法的错误信息,例如括号是不是匹配等。Prettier:代码格式化工具进行语法的错误和纠正,当出现语法错误的时候,代码格式化…

chrome升级后,调试vue在控制台输出总是显示cjs.js

当前chrome版本120.0.6099.72 在vue中使用console.log输出时,总是显示cjs.js多少多少行,不能显示源文件名及行数 【解决方案】 打开控制台的设置 左侧找到“Ignore List”,取消勾选"enable Lgnore Listing",并重启chr…

4-Docker命令之docker history

1.docker history介绍 docker history命令是用来打印指定docker镜像的历史版本信息 2.docker history用法 docker history [参数] IMAGE [root@centos79 ~]# docker history --helpUsage: docker history [OPTIONS] IMAGEShow the history of an imageAliases:docker imag…

【Jmeter】Jmeter基础6-Jmeter元件介绍之前置处理器

前置处理器主要用于处理请求前的准备工作,如:参数、环境变量的设置等。 2.6.1、JSR223预处理程序 作用:请求前的准备工作。 参数说明: 语言:开发脚本所使用的语言,可通过下拉列表选择。参数:传…

第26节: Vue3 绑定到对象

在UniApp中使用Vue3框架时&#xff0c;你可以使用对象绑定语法将属性绑定到对象上。下面是一个示例&#xff0c;演示了如何在UniApp中使用Vue3框架使用绑定到对象&#xff1a; <template> <view> <button click"toggleActive">Toggle Active<…

TCP或许不是“可靠”的

你可能以为TCP是可靠的&#xff0c;从发送端看&#xff0c;send函数总是能把数据发送到接受端&#xff1b;而从接收端来看&#xff0c;总能把发送端接受的数据流完整传递给应用程序来处理。 可是我们认真分析过之后&#xff0c;发现“TCP是可靠的”这个论断是不正确的。 若是使…

Linux实操——安装Mysql

安装Mysql 一、检查是否已经安装了mariadb数据库,并卸载二、下载mysql包&#xff0c;并通过ftp上传到服务器三、解压安装包四、创建数据存储文件夹五、创建执行mysqld命令的用户&#xff0c;并初始化mysql六、启用传输安全七、启动mysql&#xff0c;验证是否安装成功 总结 博主…

vue2源码解析---watch和computed

监听属性watch 监听属性介绍 我们可以使用 watch 函数在每次响应式状态发生变化时触发回调函数wach 可以用于异步任务 监听属性的初始化 watch和computed都先走initSate判断传入选项 export function initState(vm) {const opts vm.$options; // 获取所有的选项if (opts.…

05 Rust 结构体

结构体 Rust 中的结构体&#xff08;Struct&#xff09;与元组&#xff08;Tuple&#xff09;都可以将若干个类型不一定相同的数据捆绑在一起形成整体&#xff0c;但结构体的每个成员和其本身都有一个名字&#xff0c;这样访问它成员的时候就不用记住下标了。 元组常用于非定…

【Hive】——DDL(DATABASE)

1 概述 2 创建数据库 create database if not exists test_database comment "this is my first db" with dbproperties (createdByAllen);3 描述数据库信息 describe 可以简写为desc extended 可以展示更多信息 describe database test_database; describe databa…

技术分享 | 接口测试价值与体系

如果把测试简单分为两类&#xff0c;那么就是客户端测试和服务端测试。移动端的测试包括 UI 测试&#xff0c;兼容性测试等&#xff0c;服务端测试包括接口测试。接口测试检查数据的交换、传递和控制管理过程。它绕过了客户端&#xff0c;直接对服务端进行测试。 接口测试的价值…

链表之带头双向循环链表(C语言版)

我们之前已经介绍过链表的知识了&#xff0c;这里我们直接开始实现带头双向循环链表 数据结构之单链表&#xff08;不带头单向非循环链表&#xff09;-CSDN博客 第一步&#xff1a;定义结构体 //定义结构体 typedef int SLTDateType; typedef struct Listnode {SLTDateType d…

字符设备驱动框架的编写

一. 简介 我们在学习裸机或者 STM32 的时候关于驱动的开发就是初始化相应的外设寄存器&#xff0c;在 Linux 驱动开发中&#xff0c;肯定也是要初始化相应的外设寄存器。 只是在 Linux 驱动开发中&#xff0c; 我们需要按照其规定的框架来编写驱动&#xff0c;所以说学 …

【HTML5、CSS3】新增特性总结!

文章目录 23 HTML5 新增特性23.1 语义化标签23.2 多媒体标签23.2.1 视频<video>标签23.2.2 音频<audio>标签 23.3 input属性值23.4 表单属性 24 CSS3 新增特性24.1 属性选择器24.2 结构伪类选择器24.2.1 选择第n个元素24.2.2 常用的6个结构伪类选择器 24.3 伪元素选…

云计算技术----数据可视化

一. 单选题&#xff08;共9题&#xff0c;63.9分&#xff09; (单选题)下列关于数据可视化的描述,哪个是错误的? A. 数据可视化是指将大型数据集中的数据以图形图像形式表示 B. 利用数据分析和开发工具发现其中未知信息的处理过程 C. 数据可视化技术的基本思想是将数据库中每一…