0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux mv命令的真正使用方法

dyquk4xk2p3d 来源:民工哥技术之路 2023-03-26 10:26 次阅读

众所周知,Linux 系统中,一切皆文件!

1eb5b5b2-ca69-11ed-bfe3-dac502259ad0.png

所以,对于文件的操作与管理在 Linux 系统中显得尤其重要,今天,就给大家介绍一个文件管理命令 mv 。

本文主要讲解 mv 命令的具体用法与实际中应该注意的点,让我们一起通过理论+实例的形式,一起来研究和学习 mv 命令。

mv 简介

mv 命令是 move 的缩写, 也是 Linux 系统下常用的命令之一,mv 命令常常用于移动、重命名文件或目录。或者将文件从一个目录移动到另一个目录中,如果将一个文件移动到一个已经存在的目标文件中,这时目标文件的内容会被此文件内容覆盖。

如果源为文件,而目标为目录,mv 将进行文件的位置移动。如果源为目录,则目标只能是目录(不能为文件),mv 将进行目录的重命令名。

mv 命令移动文件时,在目标不同的情况下,会有下面 4 种不同的结果

如果目标是指定的某一个具体路径,则源文件会被移动到此目录下,且文件名不变。

如果目标不是目录,则源文件名(只能有一个)会变为此目标文件名,如果存在同名文件,则会覆盖己存在的同名文件。

如果源文件和目标文件在同一个目录下,mv 的作用就是修改文件名。

当目标是目录时,源文件或目录可以是多个,这时所有的源文件都会被移至目标目录下。且所有的文件都将保留以前的文件名。

语法格式

mv[选项]源文件或目录目标文件或目录
mv[options]sourcedestination

选项说明

-b#当目标文件存在时,覆盖之前创建一个备份
-f#如果移动的文件或目录与目标重复,则直接覆盖(无需确认)
-i#交互式操作,覆盖前会提示用户进行确认操作,用户通过输入Y/N来确认是否覆盖
-u#若目标文件已存在,且与需移动的文件同名,只有在源文件比目标文件较新时,才会更新目标文件
-t#指定mv的目标目录,此选项使用于移动多个文件到一个目录的情况,目标文件在前,源文件在后。
-S<后缀>:#为备份文件指定(自定义的)后缀
-n#不覆盖任何现有文件
-T#将目标当作普通文件,而不是目录
-v#详细输出命令的执行过程信息

应用举例

重命名文件(目录)

命令格式:mv 源文件 目标文件 或 mv 源目录 目标目录

注意:我们在使用这个命令时必须保证源文件(目录)和目标文件(目录)在同一个目录下,并且目标文件(目录)不存在,否则使用这条命令的效果就由重命名变成文件(目录)的移动了。

首先,我们创建测试需要的文件与目录

[root@CentOS7-1mv]#ll
total0
[root@CentOS7-1mv]#touchmvfiles
[root@CentOS7-1mv]#mkdirmvdir
[root@CentOS7-1mv]#ll
total0
drwxr-xr-x2rootroot6Jan809:03mvdir
-rw-r--r--1rootroot0Jan809:02mvfiles

进行重命名操作

[root@CentOS7-1mv]#mvmvfilesmvfilessssss
[root@CentOS7-1mv]#mvmvdirmvdirectory
[root@CentOS7-1mv]#ll
total0
drwxr-xr-x2rootroot6Jan809:03mvdirectory
-rw-r--r--1rootroot0Jan809:02mvfilessssss

如果需要命令执行的过程,可以加上参数-v

[root@CentOS7-1mv]#mv-vmvfilessssssmvfiles
‘mvfilessssss’->‘mvfiles’
[root@CentOS7-1mv]#mv-vmvdirectorymvdir
‘mvdirectory’->‘mvdir’
1edfcdfc-ca69-11ed-bfe3-dac502259ad0.png

同时移动单个或多个文件(目录)

命令格式:mv 源文件(目录)1 源文件(目录)2 目标目录 或 mv *文件(目录) 目标目录

同时移动多个文件(目录)有两种方法:

第一种命令格式可以把多个文件(目录)同时移动到目标目录下,文件(目录)之间以空格分隔

第二种命令格式采用通配符将具有类似文件名或类型等的文件(目录)同时移动到目标目录下

注意:目标目录下如果存在相同的文件名或目录名,容易误操作将同名文件或目录覆盖。

创建测试用的文件和目录

[root@CentOS7-1mv]#touch1.txt2.txt3.txt
[root@CentOS7-1mv]#mkdir123
[root@CentOS7-1mv]#ll
total0
drwxr-xr-x2rootroot6Jan809:201
-rw-r--r--1rootroot0Jan809:191.txt
drwxr-xr-x2rootroot6Jan809:202
-rw-r--r--1rootroot0Jan809:192.txt
drwxr-xr-x2rootroot6Jan809:203
-rw-r--r--1rootroot0Jan809:193.txt

移动文件

[root@CentOS7-1mv]#mv-v1.txt2.txt3.txt/root/mv1/
‘1.txt’->‘/root/mv1/1.txt’
‘2.txt’->‘/root/mv1/2.txt’
‘3.txt’->‘/root/mv1/3.txt’
[root@CentOS7-1mv]#ll/root/mv1/
total0
-rw-r--r--1rootroot0Jan809:191.txt
-rw-r--r--1rootroot0Jan809:192.txt
-rw-r--r--1rootroot0Jan809:193.txt

1f051c24-ca69-11ed-bfe3-dac502259ad0.png

目录的移动其实也是一样操作,也非常的简单。如果目标位置有同名文件,我们不希望它被覆盖,可以加上-n选项

[root@CentOS7-1mv]#ll
total0
drwxr-xr-x2rootroot6Jan809:201
drwxr-xr-x2rootroot6Jan809:202
drwxr-xr-x2rootroot6Jan809:203
-rw-r--r--1rootroot0Jan809:24test.txt
[root@CentOS7-1mv]#ll/root/mv1/
total0
-rw-r--r--1rootroot0Jan809:191.txt
-rw-r--r--1rootroot0Jan809:192.txt
-rw-r--r--1rootroot0Jan809:193.txt
-rw-r--r--1rootroot0Jan809:25test.txt
[root@CentOS7-1mv]#mv-nvtest.txt/root/mv1/
[root@CentOS7-1mv]#ll/root/mv1/
total0
-rw-r--r--1rootroot0Jan809:191.txt
-rw-r--r--1rootroot0Jan809:192.txt
-rw-r--r--1rootroot0Jan809:193.txt
-rw-r--r--1rootroot0Jan809:25test.txt
1f260182-ca69-11ed-bfe3-dac502259ad0.png

交互式覆盖文件

这个操作只需要添加一个参数(-i)即可

[root@CentOS7-1mv]#mvtest.txt-v-i/root/mv1/
mv:overwrite‘/root/mv1/test.txt’?y
‘test.txt’->‘/root/mv1/test.txt’
[root@CentOS7-1mv]#ll/root/mv1/
total0
-rw-r--r--1rootroot0Jan809:191.txt
-rw-r--r--1rootroot0Jan809:192.txt
-rw-r--r--1rootroot0Jan809:193.txt
-rw-r--r--1rootroot0Jan809:24test.txt
1f5119b2-ca69-11ed-bfe3-dac502259ad0.png

仅当源文件(目录)较新时才覆盖

1f775ba4-ca69-11ed-bfe3-dac502259ad0.png

从上图中可以看出,mv 目录下的 test.txt 文件较新,如果我们执行反向操作,并且带上-u参数,来测试旧文件是否会覆盖掉新文件:

[root@CentOS7-1mv]#mv-v-u/root/mv1/test.txt./
[root@CentOS7-1mv]#ll
total0
drwxr-xr-x2rootroot6Jan809:201
drwxr-xr-x2rootroot6Jan809:202
drwxr-xr-x2rootroot6Jan809:203
-rw-r--r--1rootroot0Jan809:36test.txt

结果表明并没有覆盖掉新文件,接下来,我们测试仅当源文件(目录)较新时才覆盖这个功能。

[root@CentOS7-1mv]#mv-v-u./test.txt/root/mv1/
mv:overwrite‘/root/mv1/test.txt’?y
‘./test.txt’->‘/root/mv1/test.txt’
[root@CentOS7-1mv]#ll/root/mv1/
total0
-rw-r--r--1rootroot0Jan809:191.txt
-rw-r--r--1rootroot0Jan809:192.txt
-rw-r--r--1rootroot0Jan809:193.txt
-rw-r--r--1rootroot0Jan809:36test.txt

1f91158a-ca69-11ed-bfe3-dac502259ad0.png

从上图结果中可以看出覆盖成功,这种操作可以用在大量文件移动时,也可以用在更新文件或目录时。

覆盖文件前创建备份

[root@CentOS7-1mv]#cattest1.txt
1
[root@CentOS7-1mv]#cattest2.txt
2

如果test2.txt存在,原来的文件会被备份

[root@CentOS7-1mv]#mv-v-btest1.txttest2.txt
mv:overwrite‘test2.txt’?y
‘test1.txt’->‘test2.txt’(backup:‘test2.txt~’)
[root@CentOS7-1mv]#ll
total12
-rw-r--r--1rootroot2Jan809:49test2.txt
-rw-r--r--1rootroot2Jan809:49test2.txt~
-rw-r--r--1rootroot2Jan809:49test3.txt
[root@CentOS7-1mv]#cattest2.txt
1
[root@CentOS7-1mv]#cattest2.txt~
2

1fc1bf00-ca69-11ed-bfe3-dac502259ad0.png

在备份的过程中,我们还可以通过参数--suffix=xxx来自定义文件的后缀名:

[root@CentOS7-1mv]#cattest2.txt
1
[root@CentOS7-1mv]#cattest3.txt
3
[root@CentOS7-1mv]#mv-v-b--suffix=.baktest2.txttest3.txt
mv:overwrite‘test3.txt’?y
‘test2.txt’->‘test3.txt’(backup:‘test3.txt.bak’)
[root@CentOS7-1mv]#cattest3.txt
1
[root@CentOS7-1mv]#cattest3.txt.bak
3

1fe33400-ca69-11ed-bfe3-dac502259ad0.png

以上就是民工哥今天给大家分享的关于 mv 命令的各种用法以及实例操作,欢迎大家分享你所知道的更多关于 mv 命令的用法,请在评论区留言。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    4454

    浏览量

    125128
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206742
  • 文件
    +关注

    关注

    1

    文章

    540

    浏览量

    24402
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849

原文标题:看了这篇文章!我才知道 Linux mv 命令的真正使用方法

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux inxi命令的3种使用方法

    当我在查询有关笔记本电脑电池健康状况的信息时,我偶然发现了 inxi。它是一个命令行系统信息工具,可提供有关你的 Linux 计算机(无论是笔记本电脑、台式机还是服务器)的大量信息。
    发表于 10-31 10:05 551次阅读

    Linux系统中的Makefile的使用方法

    今天主要和大家聊一聊,Linux系统中的Makefile的使用方法
    发表于 11-17 09:35 3509次阅读

    Linux中xargs命令使用方法

    xargs命令从标准输入或另一个命令的输出中读取文本行,并将其转换为命令并执行。
    发表于 11-25 15:14 6205次阅读
    <b class='flag-5'>Linux</b>中xargs<b class='flag-5'>命令</b>的<b class='flag-5'>使用方法</b>

    Linux Shell学习:uniq命令使用方法介绍

    Linux Shell学习:uniq命令使用方法介绍uniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次! 接下来通过实践实例说明: [root@stu100 ~]# ca
    发表于 06-06 12:24

    Linux命令详解之mv命令

    一、Linux mv命令 语法mv [OPTION]... [-T] SOURCE DESTmv [OPTION]... SOURCE... DIRECTORYmv [OPTION].
    发表于 08-27 13:50

    linux中常用命令与基本管理(北大青鸟)

    Linux/Unix文本编辑器的基本概念PICO编辑器的使用VI编辑器的使用EMACS编辑器的基本使用掌握Linux命令的一般使用方法掌握Linux
    发表于 12-06 13:00 37次下载

    基于Linuxmv 指令移动文件和目录命令

    当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选。
    的头像 发表于 12-31 00:57 1.3w次阅读
    基于<b class='flag-5'>Linux</b>的<b class='flag-5'>mv</b> 指令移动文件和目录<b class='flag-5'>命令</b>

    Linux上使用简单的cp和mv命令来复制和重命名文件

    有个非常有用的例子。假设你想重新命名一个目录中的文件,将所有的大写字母替换为小写字母。一般来说,你在 Unix 或 Linux 系统上找不到大量大写字母的文件,但你可以有。这里有一个简单的方法
    的头像 发表于 06-25 14:02 8197次阅读

    Linux系统管理命令整理及使用方法介绍

    linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,
    的头像 发表于 09-23 14:55 6626次阅读

    Embeded linux之buildroot的使用方法

    Embeded linux之buildroot使用方法
    发表于 05-15 14:10 3039次阅读
    Embeded <b class='flag-5'>linux</b>之buildroot的<b class='flag-5'>使用方法</b>

    C语言_Linux基本命令与C语言基础

    这篇文章介绍在Linux环境下学习C语言搭建基本的环境过程,了解基础的几个命令使用方法,了解Linux下用户权限配置,标准main函数传参方式等等。
    的头像 发表于 08-14 09:45 916次阅读

    讨论Linux mv命令的一些实际示例

    mv 命令的最基本用途是重命名文件。那么让我们看看如何重命名当前目录中的文件。
    的头像 发表于 02-14 16:28 436次阅读

    浅析Linux精致的命令

    这只是一小部分常用的Linux命令Linux有很多命令可以使用。建议通过man命令来查看命令
    的头像 发表于 04-24 16:28 1338次阅读

    docker exec命令使用方法

    有用的命令,用于在正在运行的容器中执行命令。 在本文中,我将详细介绍Docker exec命令使用方法,包括命令格式、参数选项、使用示例等
    的头像 发表于 11-23 09:33 759次阅读

    FTP常用命令使用方法

    FTP常用命令使用方法 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的常用协议。通过FTP,用户可以从一个主机上下载文件到本地,或将本地文件上传到远程主机
    的头像 发表于 12-15 11:28 698次阅读