Linux系统之mv命令的基本使用

2024-06-04 21:52

本文主要是介绍Linux系统之mv命令的基本使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux系统之mv命令的基本使用

  • 一、mv命令介绍
    • 1. mv命令简介
    • 2. mv命令的使用结果
  • 二、mv命令的使用帮助
    • 1. 在命令行的帮助信息
    • 2. mv常用选项
  • 三、mv命令的基本使用
    • 1. 创建源目录和目标目录
    • 2. 新建测试文件
    • 3. 将源目录文件复制到目标目录
    • 4. 将文件进行改名
    • 5. 将目录的所有文件转移到目标目录
    • 6. 移动多个文件到目标目标
    • 7. 移动目录
    • 8. 覆盖文件
  • 四、mv的日常使用
    • 1. 提示是否覆盖文件
    • 2. 覆盖文件时对源文件备份
    • 3. 强制覆盖文件
    • 4. 打印转移信息
    • 5. 源文件比目标文件新时才执行更新
  • 五、注意事项

在这里插入图片描述

一、mv命令介绍

1. mv命令简介

mv命令主要是在Linux系统中用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

2. mv命令的使用结果

  • mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有不同的结果:

1.如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
2.如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。
3.如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。
4.当目标文件是目录时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标目录中。所有移到该目录下的文件都将保留以前的文件名。

二、mv命令的使用帮助

1. 在命令行的帮助信息

在命令行的,mv --help显示mv的帮助信息。

[root@jeven ~]# mv --help
Usage: mv [OPTION]... [-T] SOURCE DESTor:  mv [OPTION]... SOURCE... DIRECTORYor:  mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.Mandatory arguments to long options are mandatory for short options too.--backup[=CONTROL]       make a backup of each existing destination file-b                           like --backup but does not accept an argument-f, --force                  do not prompt before overwriting-i, --interactive            prompt before overwrite-n, --no-clobber             do not overwrite an existing file
If you specify more than one of -i, -f, -n, only the final one takes effect.--strip-trailing-slashes  remove any trailing slashes from each SOURCEargument-S, --suffix=SUFFIX          override the usual backup suffix-t, --target-directory=DIRECTORY  move all SOURCE arguments into DIRECTORY-T, --no-target-directory    treat DEST as a normal file-u, --update                 move only when the SOURCE file is newerthan the destination file or when thedestination file is missing-v, --verbose                explain what is being done-Z, --context                set SELinux security context of destinationfile to default type--help     display this help and exit--version  output version information and exitThe backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable.  Here are the values:none, off       never make backups (even if --backup is given)numbered, t     make numbered backupsexisting, nil   numbered if numbered backups exist, simple otherwisesimple, never   always make simple backupsGNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'mv invocation'

2. mv常用选项

mv命令的常用选项

--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

三、mv命令的基本使用

1. 创建源目录和目标目录

创建一个源目录和目标目录

[root@jeven ~]# mkdir /source
[root@jeven ~]# mkdir /target

2. 新建测试文件

在源目录和目标目录分别新建测试文件。

[root@jeven ~]# touch /source/sou_file{01..03}.txt
[root@jeven ~]# ls /source/
sou_file01.txt  sou_file02.txt  sou_file03.txt
[root@jeven ~]# touch /target/tar_file{01..03}.txt
[root@jeven ~]# ls /target/
tar_file01.txt  tar_file02.txt  tar_file03.txt

3. 将源目录文件复制到目标目录

将/source/sou_file01.txt 复制到/target/目录下

[root@jeven ~]# mv /source/sou_file01.txt /target/
[root@jeven ~]# ls /target/
sou_file01.txt  tar_file01.txt  tar_file02.txt  tar_file03.txt

4. 将文件进行改名

在同一目录下将文件进行改名,例如在target/目录,将sou_file01.txt改名为aa_test.txt

[root@jeven ~]#  cd  /target/
[root@jeven target]# mv sou_file01.txt  aa_test.txt
[root@jeven target]# ls /target/
aa_test.txt  tar_file01.txt  tar_file02.txt  tar_file03.txt

5. 将目录的所有文件转移到目标目录

将/source/目录的所有文件,转移到目标目录 /target/

[root@jeven ~]# mv /source/*  /target/
[root@jeven ~]# ls /target/
aa_test.txt  sou_file02.txt  sou_file03.txt  tar_file01.txt  tar_file02.txt  tar_file03.txt

6. 移动多个文件到目标目标

将/test/目录下的file01和file02文件转移到目标目录/target

[root@jeven ~]# mv /test/file01 /test/file02 /target/
[root@jeven ~]# ls /target/
aa_test.txt  file01  file02  sou_file02.txt  sou_file03.txt  tar_file01.txt  tar_file02.txt  tar_file03.txt

7. 移动目录

将/test目录移动到/target目录

[root@jeven ~]# mv /test/ /target/
[root@jeven ~]# ls /target/
aa_test.txt  file01  file02  sou_file02.txt  sou_file03.txt  tar_file01.txt  tar_file02.txt  tar_file03.txt  test

8. 覆盖文件

在/source目录下,创建两个文件,并写入内容。

root@jeven ~]# cd /source/
[root@jeven source]# ls
[root@jeven source]# echo 11 > aa.txt
[root@jeven source]# echo 22 > bb.txt
[root@jeven source]# cat aa.txt 
11
[root@jeven source]# cat bb.txt 
22

当源文件aa.txt和目标文件bb.txt都存在时,源文件会变成目标文件bb.txt,并覆盖原来的bb.txt文件。

[root@jeven source]# mv aa.txt bb.txt 
mv: overwrite ‘bb.txt’? yes
[root@jeven source]# ls
bb.txt
[root@jeven source]# cat bb.txt 
11

四、mv的日常使用

1. 提示是否覆盖文件

在当覆盖文件时,提示是否覆盖文件,默认mv命令加了-I

[root@jeven source]# mv -i aa.txt bb.txt 
mv: overwrite ‘bb.txt’? yes
[root@jeven source]# ls
bb.txt
[root@jeven source]# cat bb.txt 
11
[root@jeven source]# alias |grep mv
alias mv='mv -i'

2. 覆盖文件时对源文件备份

使用mv -b,在覆盖文件时,对源文件进行备份。

[root@jeven source]# echo 11 > aa.txt
[root@jeven source]# echo 22 > bb.txt
[root@jeven source]# mv -b aa.txt bb.txt 
mv: overwrite ‘bb.txt’? yes
[root@jeven source]# ls
bb.txt  bb.txt~
[root@jeven source]# cat bb.txt
11
[root@jeven source]# cat bb.txt~
22

3. 强制覆盖文件

使用mv -f 强制覆盖文件。

mv -f aa.txt bb.txt 

4. 打印转移信息

使用mv -v打印移动信息

[root@jeven source]# mv -v /source/bb.txt /target/
‘/source/bb.txt’ -> ‘/target/bb.txt’

5. 源文件比目标文件新时才执行更新

当源文件是最新更新时,才可以覆盖目标文件。

  • 目标文件比源文件更新时,不执行覆盖操作。
[root@jeven source]# echo 11 > aa.txt
[root@jeven source]#  echo 22 > bb.txt
[root@jeven source]# mv -uv aa.txt bb.txt 
[root@jeven source]# ls
aa.txt  bb.txt
  • 源文件比目标文件更新时,执行覆盖操作。
[root@jeven source]# echo ee > aa.txt 
[root@jeven source]# mv -uv aa.txt bb.txt 
mv: overwrite ‘bb.txt’? yes
‘aa.txt’ -> ‘bb.txt’
[root@jeven source]# ls
bb.txt
[root@jeven source]# cat bb.txt 
ee

五、注意事项

在Linux中使用mv命令时,有几个注意事项可以帮助你更安全、有效地操作文件和目录:

  1. 权限问题:确保你有足够的权限去移动或重命名文件。如果没有,mv命令会失败,除非使用了sudo(对于需要提升权限的操作)。

  2. 覆盖风险:默认情况下,如果你尝试移动一个文件到一个已存在的同名文件的位置,mv会直接覆盖目标文件,不会询问。为了避免意外覆盖,可以使用-i(interactive)选项,这样在覆盖前会提示确认。

  3. 备份原文件:使用-b选项可以在覆盖文件前自动创建一个备份,这对于保护重要数据很有帮助。

  4. 移动与重命名的区别:当第二个参数是文件名时,视为重命名操作;当是目录名时,则是移动操作。确保正确指定目标以达到预期效果。

  5. 跨文件系统移动:跨文件系统移动文件时,mv实际上是先复制再删除原文件。这意味着如果操作过程中出现错误(如空间不足),可能会丢失原文件。

  6. 目录操作:移动目录时,记得在目标路径后加斜杠(/),这可以避免在目标目录不存在时意外地将源目录作为目标目录的一个子目录移动进去。

  7. 批量操作:可以同时移动多个文件或目录,只需在源文件列表中列出它们,但目标必须是一个已存在的目录。

  8. 符号链接:移动符号链接会移动链接本身而不是链接指向的文件。若要移动实际文件,需要使用-L选项来跟踪并移动链接指向的目标。

这篇关于Linux系统之mv命令的基本使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1031229

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三