良许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 的相关文章

  • Linux中显示文件系统的磁盘使用情况及统计df和du命令的基本用法

    df disk free 功能 查看磁盘的整体使用情况 包括总的磁盘空间大小 使用了多少磁盘空间 还剩多少磁盘空间可以使用 用法 df 格式显示参数 需要统计的目录 df不加任何参数 默认显示所有目录的磁盘使用情况 以KB为单位 eg df
  • linux 中常用的压缩和解压缩命令详解(tar zip)

    文章目录 一 tar命令 1 压缩 2 解压 二 zip命令 1 压缩 2 解压 三 文件加密压缩和密码解压 1 tar命令 1 1 加密压缩 1 2 密码解压 2 zip命令 2 1 加密压缩 2 2 密码解压 在工作中 涉及到文件传输
  • Nginx + tomcat 的搭建

    目录 一 硬件需求 二 nginx服务安装 1 系统初始化 2 安装环境 3 创建用户 4 解压 编译 安装 5 优化环境变量 6 配置nginx service文件 7 给与权限 三 tomcat 安装 两台安装一样 1 系统初始化 2
  • 详解Linux手动释放缓存的方法

    详解Linux手动释放缓存的方法 Linux释放内存的命令 sync echo 1 gt proc sys vm drop caches 0 不释放 系统默认值 1 释放页缓存 2 释放dentries和inodes 3 释放所有缓存 释放
  • Linux基础 - NTP时间同步

    博客主页 Passerby Wang的博客 CSDN博客 系统运维 云计算 Linux基础领域博主 所属专栏 Linux基础 上期文章 Linux基础 DNS服务进阶 如觉得博主文章写的不错或对你有所帮助的话 还望大家多多支持呀 关注 点赞
  • bash脚本调试方法

    本文全面系统地介绍了shell脚本调试技术 包括使用echo tee trap等命令输出关键信息 跟踪变量的值 在脚本中植入调试钩子 使用 n 选项进行shell脚本的语法检查 使用 x 选项实现shell脚本逐条语句的跟踪 巧妙地利用sh
  • 【Linux】shell脚本实战-if多分支条件语句详解

    前言 前面我们已经学习过单分支语句和双分支语句的使用 双分支语句就是在单分支语句的基础上又加了一层结果项 今天我们来探讨下多分支语句 顾名思义 多分支语句就是在双分支语句基础上又加了一个可能性的结果 如果你还没有学习单双分支条件语句 建议参
  • 十二、Linux系统中的软件管理

    十二 Linux 系统中的软件管理 rpm dnf命令 软件仓库的搭建 12 1 Linux中软件包的类型 1 DEB UBlinux DEBlinux 2 RPM redhat centOS fadora 3 bz2 gz xz 1 需要
  • 【linux基础9】系统文件的压缩和传输(scp,rsync传输的使用方式和压缩解压方式)

    系统文件的压缩和传输 一 实验环境 二 传输文件 一 基本信息 二 scp命令 一 指令 二 测试 scp远程传输文件 三 rsync命令 一 指令 二 rsync远程同步传输 四 文件的归档压缩 1 文件归档 装进一个箱子里面 2 压缩和
  • Linux基础篇学习——常见系统命令:ls,pwd,cd,date,hwclock,passwd,su,clear,who,w,uname,uptime,last,dmesg,free,ps,top

    ls 显示指定目录中的内容 ls OPTION FILE OPTION a all 显示所有文件包括隐藏文件 l 列出长属性 显示出文件的属性与权限等数据信息 i 列出inode节点号 结合 l使用 d 显示目录本身 且不列出目录中的列表文
  • Linux01 一 Shell与命令执行

    Shell 是在操作系统内核的基础上编写的程序 也是一种脚本语言 Shell 为用户提供了操作界面 让用户高效安全地访问 Linux 内核 执行命令 command options parameter1 parameter2 command
  • tcpdump: syntax error 解决-linux 下安装tcpdump 和 libpcap

    关键 linux 如何下载包 wget 下载指定目录 linu 下载文件到指定目录 今天心血来潮突然想在自己的服务上抓某个端口 结果执行tcpdump时报错了 http www tcpdump org index html 找到Latest
  • 良许Linux

    一个系统管理员可能会同时管理着多台服务器 这些服务器也许会放在不同的地方 要亲自一台一台的去访问来管理它们显然不是最好的方法 通过远程控制的方法应该是最有效的 Linux系统的远程管理工具大概有几种 telnet ssh vnc等 其中ss
  • redhat常用基础命令代码

    redhat常用基础命令 1 登陆和关机 重启和切换用户 创建删除用户 远程登陆redhat ssh root 192 168 xx xx ssh为远程登陆选择的通道 root为用户名 192 168 xx xx为ip地址 关机 shutd
  • Linux里隐藏的计算器,你知道它的奥秘吗?

    大家都知道 windows下有个计算器工具 我们在工作生活中经常使用到它 但是 你可知Linux下也同样有个计算器吗 当然 良许说的是命令行下的计算器工具 而不是界面型的计算器 良许是Linux应用开发工程师 平时基本是在命令行下工作 所以
  • 海德拉 暴力破解ssh密码

    上一篇博客写到怎么有效地防护ssh密码遭到暴力破解 今天给大家介绍下如何暴力破解ssh密码 作为一名云计算工程师 懂得如何防护比如何攻击更重要 hydra是世界顶级密码破解工具 支持几乎所有协议的在线密码破解 密码能否被破解取决于密码字典是
  • linux环境下设置用户密码过期期限

    关于密码过期时间和用户过期时间的设置 通常使用chage命令和usermod命令 设置某个用户的过期时间 accountexpires 可以用usermod e来设置 查看某个用户的密码 passwordexpires 过期时间等信息 可以
  • Linux下more命令高级用法

    我们在 Linux 环境下工作时 每天肯定会跟各种各样的文本文件打交道 这些文件 有时候会非常长 无法在一屏的空间内显示完全 所以 在查看这种文件时 我们需要分页显示 这时 我们就可以使用 more 命令 more 命令基本用法 more
  • linux中的selinux到底是什么,本篇文章彻底明白

    原文链接https www phpyuan com 235739 html 本文加以修改 若有侵权 请联系删除 一 前言 安全增强型 Linux Security Enhanced Linux 简称 SELinux 它是一个 Linux 内
  • Linux下用户的创建与删除

    我们在Linux下创建用户主要有两种方式 adduser和useradd 它们的区别以及主要用法如下 adduser adduser的用法很简单 只需adduser username即可 如下 sudo adduser alvin 这个命令

随机推荐

  • 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 打印操