良许Linux

2023-11-15

mv 也是 Linux 下一个使用频率非常高的命令,但除了一些基本用法,你还知道它的哪些高级用法呢?

1. 基本用法

  1. 移动一个/多个文件;
  2. 移动一个/多个目录;
  3. 重命名文件/目录。

这些都是很基本的用法,无需赘述。下面介绍一些更高级的用法。

2. 打印操作信息

我们如果只移动一两个或少数几个文件/目录时,暂且还可以去目标位置去查看文件是否移动成功。但如果有千百个文件呢?如何在不去目标位置查看的情况下知道我们的操作是否已经成功了呢?我们可以加上 -v 选项。

[alvin@VM_0_16_centos mv_test]$ mv -v *.txt /home/alvin/test/mv_test/des/
‘file1.txt’ -> ‘/home/alvin/test/mv_test/des/file1.txt’
‘file2.txt’ -> ‘/home/alvin/test/mv_test/des/file2.txt’
‘file3.txt’ -> ‘/home/alvin/test/mv_test/des/file3.txt’
‘file4.txt’ -> ‘/home/alvin/test/mv_test/des/file4.txt’
‘file5.txt’ -> ‘/home/alvin/test/mv_test/des/file5.txt’

当然,此方法同样适用于移动目录。

3. 使用交互模式

在默认情况下,我们移动文件/目录时,不会有任何提示。如果在目标位置我们有个相同名字的文件/目录,mv 命令也不会提示而直接替换原来的文件。而这样的操作,有时可能会造成灾难性的后果。

在这种情况下,我们可以加一个 -i 选项,当目标位置有相同名字的文件时,它将会进行提示。如果你确认要覆盖目标文件,键入 y 即可。

[alvin@VM_0_16_centos mv_test]$ mv -i file1.txt /home/alvin/test/mv_test/des/
mv: overwrite ‘/home/alvin/test/mv_test/des/file1.txt’? y

4. 不覆盖同名文件

如果目标位置有同名文件,我们不希望它被覆盖,可以加上 -n 选项。

[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:26 file2.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:35 file3.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:26 des/file1.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:27 des/file2.txt
[alvin@VM_0_16_centos mv_test]$ mv -nv *.txt /home/alvin/test/mv_test/des/
‘file3.txt’ -> ‘/home/alvin/test/mv_test/des/file3.txt’    #目标位置没有file3.txt文件,所以成功移动
[alvin@VM_0_16_centos mv_test]$ ls
des  file2.txt

5. 使用更新选项

当目标位置有同名文件/目录时,我们只希望源文件比目标文件时间戳更新时,才进行覆盖,否则不执行。这种情况下,我们可以使用 -u 选项。

[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:26 file1.txt    #源文件比目标文件时间戳更新
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:26 file2.txt    #源文件比目标文件时间戳更旧
-rw-rw-r-- 1 alvin alvin 0 Feb  8 16:53 des/file1.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:27 des/file2.txt
[alvin@VM_0_16_centos mv_test]$ mv -uv *.txt /home/alvin/test/mv_test/des/
‘file1.txt’ -> ‘/home/alvin/test/mv_test/des/file1.txt’    #只有时间戳更新的文件被替换
[alvin@VM_0_16_centos mv_test]$ ls
des  file2.txt

6. 覆盖前创建备份

目标位置已经有了同名文件,如果直接覆盖总觉得有点不踏实,万一现在的决定是错的呢?有没可能在覆盖之前,先将目标文件进行备份?答案是肯定的,加一个 -b 选项即可。

[alvin@VM_0_16_centos mv_test]$ mv -bv *.txt /home/alvin/test/mv_test/des/
‘file1.txt’ -> ‘/home/alvin/test/mv_test/des/file1.txt’ (backup: ‘/home/alvin/test/mv_test/des/file1.txt~’)
‘file2.txt’ -> ‘/home/alvin/test/mv_test/des/file2.txt’ (backup: ‘/home/alvin/test/mv_test/des/file2.txt~’)
[alvin@VM_0_16_centos mv_test]$ ll des/
total 0
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:41 file1.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:26 file1.txt~
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:26 file2.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:27 file2.txt~
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:35 file3.txt

可以看到,在覆盖之前,会将目标文件备份为一个带波浪号 ~ 的文件,同时细心的读者也会注意到,覆盖后文件与备份文件的时间戳不一样。

以上就是 mv 命令的一些更高级用法,灵活使用的话会为自己的工作效率提高一个档次,在同事面前也更能装逼。

作者:良许,来源:公众号「良许Linux」


我是良许,世界500强外企 Linux 开发工程师,专业生产 Linux 干货。欢迎关注我的公众号「良许Linux」,回复「1024」获取最新最全的技术资料,回复「入群」进入高手如云技术交流群。

img

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

良许Linux 的相关文章

  • LTE频段(band)划分

    1 TDD LTE 国内使用的TDD包括B38 B39 B40 B41 其中B38是B41的子集 国内运营商频段划分如下 其中移动B40 联通电信B41频段为室内补充频段 联通电信定制机均不支持B40频段 基本可以解读为该频段目前被联通电信

随机推荐

  • Java概述

    Java 简介 一个苦逼的建筑专业的Java小白 什么是 Java Java 是一门面向对象编程语言 不仅吸收了 C 语言的各种优点 还摒弃了 C 里难以理解的多继承 指针等概念 因此 Java 语言具有功能强大和简单易用两个特征 Java
  • Hive【Hive(一)DDL】

    前置准备 需要启动 Hadoop 集群 因为我们 Hive 是在 Hadoop 集群之上运行的 从DataGrip 或者其他外部终端连接 Hive 需要先打开 Hive 的 metastore 进程和 hiveserver2 进程 meta
  • 深度之眼Paper带读笔记NLP.10:DCNN

    文章目录 前言 第一课 论文导读 句子建模简介 词表征Word Representation 基于分布式相似性的表征Distributional Similarity based representations 基于窗口的共现矩阵Windo
  • 《汽车行业面向智能制造的BOM物料管理》拆书心得—第三章 企业级BOM架构探讨

    各企业对各种BOM形态叫法不一 为后续探讨方便 首先从业界较流行的叫法来定义各BOM形态 明确各形态BOM的内涵 服务对象及作用 这些BOM形态包括早期BOM Early BOM 工程BOM Engineering BOM EBOM CAD
  • 接口测试工具Apifox 基础篇:公共脚本

    一 公共脚本的使用背景 1 实现脚本复用 避免多处重复编写相同功能的脚本 2 相同功能的脚本或通用类 方法可放到公共脚本中供接口直接引用 二 使用方式 1 管理公共脚本 打开 项目设置 gt 公共脚本 在这里管理公共脚本 2 引用公共脚本
  • npm 升级

    更新到最新版本 npm install g npm 更新到指定版本 npm g install npm 8 0 0 清理 npm 缓存数据 npm cache clean force
  • 原生js 选择文件,获取 input type=file 时候的文件路径

    使用 URL createObjectURL 方法来获取文件的路径 div div
  • 【以太坊源码】以太坊黄皮书参数

    由于参数比较多 直接贴出来比较杂乱 我将其整理在百度脑图 按照黄皮书章节顺序进行分类 并调整了部分常数顺序 需要查阅特定的参数 可以使用ctrl F直接查询 由于百度脑图不支持下标 或者我不知道 所有参数统一没用下标 并在备注中说明是否有下
  • postman触发任务处理,长时间未响应时,自动retry,导致SFTP连接意外中断

    背景 今天写了一个数据处理任务 用于后端定时触发 并为这个定时任务提供了一个触发接口 用于手动触发 这个任务的处理逻辑 大概是从SFTP上拉取文件 并对文件进行解析 任务写完后 在测试时 数据量较少 并未发现问题 现象 今天在正式环境手动触
  • 复习之vsftp服务

    一 vsftp服务简介 文件传输协议 File Transfer Protocol FTP 是用于在网络上进行文件传输的一套标准协议 它工作在 OSI 模型的第七层 即应用层 使用 TCP 传输而不是 UDP 客户在和服务器建立连接前要经过
  • 统计学离散型变量和连续型变量有什么区别?

    离散变量是指其数值只能用自然数或整数单位计算的则为离散变量 例如 企业个数 职工人数 设备台数等 只能按计量单位数计数 这种变量的数值一般用计数方法取得 反之 在一定区间内可以任意取值的变量叫连续变量 其数值是连续不断的 相邻两个数值可作无
  • Opencv ORC——文字定位与切割

    字符切割步骤 要做文字识别 第一步要考虑的就是怎么将每一个字符从图片中切割下来 然后才可以送入我们设计好的模型进行字符识别 现在就以下面这张图片为例 说一说最一般的字符切割的步骤是哪些 我们实际上要识别的图片很可能没上面那张图片如此整洁 很
  • Python每日一练——第1天:水仙花数

    前言 Python每日一练来啦 本文已收录于 Python每日一练 专栏 此专栏目的在于 帮忙学习Python的小白提高编程能力 训练逻辑思维 每周持续更新中 欢迎免费订阅 文章目录 1 问题描述 2 问题分析 3 算法思路 4 代码实现
  • Java多线程4--线程池--Callable方法

    1 主要流程 例子如下 package chen thread demo2 import java util concurrent 线程创建方式三 实现callable接口 callable的好处 1 可以定义返回值 2 可以抛出异常 pu
  • 9. vue常用指令 v-bind 给属性绑定值

    文章目录 1 v bind 属性名 value 1 1 value的取值 1 2 v bind 可以简写成 1 3 v bind 为 style class 属性赋值 默认情况下v bind会去Vue对象中的data中去找对应数据 但是 s
  • 企业级安全架构

    安全架构是指企业综合业务需求和对未来变化因素的考虑 针对各种安全威胁 设计的一个布局合理 提高安全系数 降低风险 节约成本的系统 企业安全架构 Enterprise Security Architechture ESA 在企业的层面定义了需
  • QT按回车后自动切换到下一个行编辑

    界面图如下 方法一 通过信号与槽的方式 connect ui gt lineEdit 1 SIGNAL editingFinished ui gt lineEdit 2 SLOT setFocus connect ui gt lineEdi
  • java版本管理说明_Java JDK 版本管理工具jabba常用命令

    1 查询JDK 1 查看服务器上可下载安装的Jdk版本jabba ls remote 过滤查询的版本jabba ls remote zulu 1 8 60 jabba ls remote gt 1 6 45 lt 1 9 latest mi
  • 日志切割方法小结 [Logrotate、python、shell脚本实现 ]

    对于Linux系统安全来说 日志文件是极其重要的工具 不知为何 我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本 大家似乎遗忘了Logrotate 争相发明自己的轮子 这真是让人沮丧啊 就好比明明身边躺着
  • 良许Linux

    mv 也是 Linux 下一个使用频率非常高的命令 但除了一些基本用法 你还知道它的哪些高级用法呢 1 基本用法 移动一个 多个文件 移动一个 多个目录 重命名文件 目录 这些都是很基本的用法 无需赘述 下面介绍一些更高级的用法 2 打印操