0009. shell命令--mv

目录

9. shell命令--mv

功能说明

语法格式

选项说明

实践操作

注意事项


9. shell命令--mv

功能说明

        mv 是 Linux 中的一个非常有用的命令,用于移动或重命名文件和目录。mv 命令来自英文单词 move 的缩写,中文译为“移动”,其功能与英文含义相同,能够对文件进行剪切和重命名操作。

        这是一个被高频使用的文件管理命令,我们需要留意它与复制命令的区别。cp 命令是用于文件的复制操作,文件个数是增加的,而 mv 则为剪切操作,也就是对文件进行移动(搬家)操作,文件位置发生变化,但总个数并无增‍加。

语法格式

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

SYNOPSIS
       mv [OPTION]... [-T] SOURCE DEST
       mv [OPTION]... SOURCE... DIRECTORY
       mv [OPTION]... -t DIRECTORY SOURCE...

选项说明

  • -i:在覆盖目标文件之前提示用户确认。
  • -f:若目标文件已经存在,不会询问是否覆盖。
  • -u:只在源文件比目标文件新,或者当目标文件不存在时,才移动或重命名源文件。
  • -b:在覆盖目标文件之前,对其进行备份。
  • -n:不覆盖已经存在的文件。
  • -t:指定mv的目标目录,此时目标目录在前,源文件在后。
  • --backup[=CONTROL]:为每个要覆盖的文件创建备份。
  • --help:显示帮助信息。
  • --version:显示版本信息。

实践操作

1. 对指定文件进行剪切后粘贴(重命名)操作
mkdir -p /test/mv    #创建测试目录
cd /test/mv   #切换到测试目录
touch file1    #创建文件 file1
ls    #查看一下
mv file1 file2    #文件 file2 之前不存在,这是移动是重命名
ls    #查看一下,发现 file1 变成 file2 了
cp file2 file1    #复制一下文件
ls    #再次查看
!mv    #再次移动试试,若目标文件存在,则会系统提示,输入 y 表示确认,n 表示不同意,演示写 n
ls    #查看一下
alias mv    #也是一样,系统做了别名

2. 将指定文件移动到指定目录中,保留文件原始名称
mkdir dir1    #创建目录 dir1
ls    #查看一下
mv file1 dir1/    #移动文件 file1 到目录 dir1 下
ls    #查看一下
ls dir1/    #查看一下目录 dir1

3. 将指定目录移动到指定目录中,并定义新的目录名称
mkdir dir2    #创建目录 dir2
ls    #查看一下
ls dir1/    #查看一下目录 dir1
mv dir2 dir1/Newdir    #移动目录 dir2 到目录 dir1 下,并将目录 dir2 改名为 Newdir
ls    #查看一下
ls dir1/    #查看一下目录 dir1

4. 将指定目录中所有的文件都移动到当前工作目录中
ls    #查看一下
mkdir dir1/dir_mv{1..3}    #批量创建目录
cp dir1/file1 .    #复制目录 dir1 下文件 file1 到当前目录,点 . 表示当面目录
ls    #查看一下
ls dir1    #查看一下 dir1
mv dir1/* .    #移动目录 dir1 下所有内容,若存在,则提示覆盖,演示写 y
ls    #查看一下

5. 移动多个文件或目录
mv Newdir/ dir_mv* file* dir1/    #一次移动内容到目录 dir1 ,也可写为 mv * dir1
ls    #查看一下
ls dir1/    #查看一下 dir1

6. 将源文件和目标文件调换,移动文件到目录(-t参数)
cd dir1/    #切换到目录 dir1
mv Newdir/ dir_mv11    #更改目录 Newdir 为 dir_mv11,
mv dir_mv3/ dir_mv22    #一样,这和改文件名称一样
ls    #查看一下
mv dir_mv1 dir_mv2    #先正常移动,即格式为:mv 源文件 目标文件
mv -t dir_mv11/ dir_mv22    #使用参数 -t ,即格式为:mv -t 目标文件 源文件
ls    #查看一下
ls dir_mv11/    #查看一下 dir_mv11
ls dir_mv2/    #查看一下 dir_mv2

命令示例:1. 对指定文件进行剪切后粘贴(重命名)操作

mkdir -p /test/mv    
cd /test/mv   
touch file1    
ls    
mv file1 file2    
ls    
cp file2 file1    
ls    
!mv    
ls    
alias mv

输出结果:

[root@MineGi ~]# mkdir -p /test/mv    
[root@MineGi ~]# cd /test/mv  
[root@MineGi /test/mv]# touch file1    
[root@MineGi /test/mv]# ls   
file1
[root@MineGi /test/mv]# mv file1 file2    
[root@MineGi /test/mv]# ls 
file2
[root@MineGi /test/mv]# cp file2 file1    
[root@MineGi /test/mv]# ls  
file1  file2
[root@MineGi /test/mv]# !mv    
mv file1 file2        
mv:是否覆盖"file2"? n
[root@MineGi /test/mv]# ls
file1  file2
[root@MineGi /test/mv]# alias mv
alias mv='mv -i'
[root@MineGi /test/mv]#

命令示例:2. 将指定文件移动到指定目录中,保留文件原始名称

mkdir dir1    
ls    
mv file1 dir1/    
ls    
ls dir1/ 

输出结果:

[root@MineGi /test/mv]# mkdir dir1    
[root@MineGi /test/mv]# ls   
dir1  file1  file2
[root@MineGi /test/mv]# mv file1 dir1/    
[root@MineGi /test/mv]# ls  
dir1  file2
[root@MineGi /test/mv]# ls dir1/
file1
[root@MineGi /test/mv]#

命令示例:3. 将指定目录移动到指定目录中,并定义新的目录名称

mkdir dir2    
ls    
ls dir1/    
mv dir2 dir1/Newdir    
ls    
ls dir1/

输出结果:

[root@MineGi /test/mv]# mkdir dir2    
[root@MineGi /test/mv]# ls    
dir1  dir2  file2
[root@MineGi /test/mv]# ls dir1/ 
file1
[root@MineGi /test/mv]# mv dir2 dir1/Newdir    
[root@MineGi /test/mv]# ls  
dir1  file2
[root@MineGi /test/mv]# ls dir1/
file1  Newdir
[root@MineGi /test/mv]#

命令示例:4. 将指定目录中所有的文件都移动到当前工作目录中

ls    
mkdir dir1/dir_mv{1..3}    
cp dir1/file1 .    
ls    
ls dir1    
mv dir1/* .    
ls 

输出结果:

[root@MineGi /test/mv]# ls    
dir1  file2
[root@MineGi /test/mv]# mkdir dir1/dir_mv{1..3}    
[root@MineGi /test/mv]# cp dir1/file1 . 
[root@MineGi /test/mv]# ls    
dir1  file1  file2
[root@MineGi /test/mv]# ls dir1 
dir_mv1  dir_mv2  dir_mv3  file1  Newdir
[root@MineGi /test/mv]# mv dir1/* .    
mv:是否覆盖"./file1"? y
[root@MineGi /test/mv]# ls
dir1  dir_mv1  dir_mv2  dir_mv3  file1  file2  Newdir
[root@MineGi /test/mv]#

命令示例:5. 移动多个文件或目录

mv Newdir/ dir_mv* file* dir1/    
ls    
ls dir1/

输出结果:

[root@MineGi /test/mv]# mv Newdir/ dir_mv* file* dir1/    
mv:是否覆盖"dir1/file1"? y
[root@MineGi /test/mv]# ls
dir1  file1
[root@MineGi /test/mv]# ls dir1/
dir_mv1  dir_mv2  dir_mv3  file1  file2  Newdir
[root@MineGi /test/mv]#

命令示例:6. 将源文件和目标文件调换,移动文件到目录(-t参数)

cd dir1/    
mv Newdir/ dir_mv11    
mv dir_mv3/ dir_mv22    
ls    
mv dir_mv1 dir_mv2    
mv -t dir_mv11/ dir_mv22    
ls    
ls dir_mv11/    
ls dir_mv2/

输出结果:

[root@MineGi /test/mv]# cd dir1/  
[root@MineGi /test/mv/dir1]# mv Newdir/ dir_mv11 
[root@MineGi /test/mv/dir1]# mv dir_mv3/ dir_mv22
[root@MineGi /test/mv/dir1]# ls
dir_mv1  dir_mv11  dir_mv2  dir_mv22  file1  file2
[root@MineGi /test/mv/dir1]# mv dir_mv1 dir_mv2  
[root@MineGi /test/mv/dir1]# mv -t dir_mv11/ dir_mv22
[root@MineGi /test/mv/dir1]# ls
dir_mv11  dir_mv2  file1  file2
[root@MineGi /test/mv/dir1]# ls dir_mv11/  
dir_mv22
[root@MineGi /test/mv/dir1]# ls dir_mv2/
dir_mv1
[root@MineGi /test/mv/dir1]#

注意事项

  • 当使用 mv 命令移动目录时,整个目录及其内容都会被移动。
  • 如果目标目录不存在,mv 命令会尝试将其创建为新的目录,并将源文件或目录移动到这个新目录中。
  • 如果目标文件或目录已经存在,并且没有使用 -i 选项,mv 命令会默默地覆盖它。因此,在使用 mv 命令时要特别小心,尤其是在处理重要文件时。

        希望这些信息能帮助你更好地理解和使用 Linux 中的 mv 命令!

        此外,还有一些额外的注意事项和技巧可以帮助你更有效地使用 mv 命令:

避免覆盖重要文件

如前文所述,mv 命令在覆盖目标文件或目录时不会进行任何警告。为了避免不小心覆盖重要文件,你应该始终在使用 mv 命令时保持谨慎,并确保你知道目标路径的内容。另外,使用 -i 选项是一个很好的习惯,它会在覆盖文件之前提示你进行确认。

使用通配符进行批量操作

你可以结合 shell 的通配符功能来使用 mv 命令,以便一次性移动或重命名多个文件。例如,mv *.txt newdir/ 将把所有扩展名为 .txt 的文件移动到 newdir 目录中。

移动多个文件或目录

        你可以在同一 mv 命令中指定多个源文件或目录,然后指定一个目标目录。例如,mv file1.txt file2.txt dir1/ dir2/ newdir/ 将把 file1.txt、file2.txt、dir1/ 和 dir2/ 移动到 newdir/ 中。

跨文件系统移动

当你尝试在不同的文件系统之间移动文件或目录时,mv 命令实际上会执行一个复制和删除的操作,而不是真正的移动。这是因为不同的文件系统之间不能直接移动数据。在这种情况下,你应该确保目标文件系统有足够的空间来存储复制的数据。

权限问题

如果你没有足够的权限来移动或重命名文件或目录,mv 命令会失败并显示相应的错误信息。在这种情况下,你可能需要使用 sudo 命令来以超级用户身份执行 mv 命令,或者更改文件或目录的权限。

查看 mv 命令的手册页

        要了解 mv 命令的更多细节和选项,你可以使用 man mv 命令来查看其手册页。手册页中包含了关于 mv 命令的详细描述、选项、示例和常见问题的解答。

        通过熟悉 mv 命令的这些细节和技巧,你可以更加高效和安全地在 Linux 系统中移动和重命名文件和目录。无论你是在管理个人文件、配置系统环境,还是在进行软件开发和部署,mv 命令都是一个非常有用的工具。

        此外,还有一些高级用法和技巧,能够进一步提升 mv 命令的使用效率和安全性。

        首先,mv 命令也支持在移动或重命名文件和目录时,使用正则表达式进行匹配。通过正则表达式,你可以精确地匹配到特定的文件名或目录名,然后对其进行移动或重命名操作。这在你需要批量处理具有特定命名模式的文件或目录时非常有用。

        其次,mv 命令还支持对目录进行递归操作。当你希望将一个目录下的所有文件和子目录都移动到另一个目录时,可以使用 -r 或 -R 选项,这将使 mv 命令递归地处理源目录下的所有内容。

        另外,mv 命令也可以与 find 命令结合使用,实现更复杂的文件移动或重命名操作。通过 find 命令,你可以根据文件的类型、大小、修改时间等属性来查找文件,然后使用 mv 命令对这些文件进行移动或重命名。

        最后,需要注意的是,尽管 mv 命令在 Linux 系统中非常强大和灵活,但在使用时仍需谨慎。特别是在进行批量操作或跨文件系统移动时,务必确保你知道目标路径的内容,并确认有足够的权限和磁盘空间来执行操作。此外,为了防止误操作导致的数据丢失,建议在执行 mv 命令之前先备份重要文件。

        总的来说,mv 命令是一个强大且灵活的工具,掌握其用法和技巧可以帮助你更加高效和安全地管理 Linux 系统中的文件和目录。通过不断学习和实践,你可以充分发挥 mv 命令的潜力,提升你的系统管理能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MineGi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值