Linux mv 命令使用介绍

21 篇文章 7 订阅

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,覆盖移动也是删除动作。加上-b经常用来备份文件或者目录。

1.命令格式


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

2.命令功能


mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

3.命令参数


  • -b:若需覆盖文件,则覆盖前先行备份。
  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会更新(update)
  • -t : —target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

4.命令实例

说明:下文中的实例是在home/lighthouse/linux-mv路径下操作。


1、文件改名( 重命名)

mv test.log new-test.log

输出:

lighthouse@VM-4-14-ubuntu:~$ ls
test.txt
lighthouse@VM-4-14-ubuntu:~$ mv test.txt test_1.txt
lighthouse@VM-4-14-ubuntu:~$ ls
test_1.txt

说明: 将文件test.txt重命名为test_1.txt

2、移动文件

命令:

mv text.txt home/lighthouse/linux-mv

输出:

lighthouse@VM-4-14-ubuntu:~/linux-mv/mv$ touch text.txt
lighthouse@VM-4-14-ubuntu:~/linux-mv/mv$ ls
text.txt
lighthouse@VM-4-14-ubuntu:~/linux-mv/mv$ mv text.txt home/lighthouse/linux-mv
mv: cannot move 'text.txt' to 'home/lighthouse/linux-mv': No such file or directory
lighthouse@VM-4-14-ubuntu:~/linux-mv/mv$ mv text.txt /home/lighthouse/linux-mv
lighthouse@VM-4-14-ubuntu:~/linux-mv/mv$ ls
lighthouse@VM-4-14-ubuntu:~/linux-mv/mv$ cd ..
lighthouse@VM-4-14-ubuntu:~/linux-mv$ ls -lR
.:
total 4
drwxrwxr-x 2 lighthouse lighthouse 4096 Jun 29 11:35 mv
-rw-rw-r-- 1 lighthouse lighthouse    0 Jun 29 11:32 text.txt

如果第二个参数路径是文件名,那会被重命名
mv text.txt home/lighthouse/linux-mv/text1.txt 那么被移动的同时重命名为text1。

3、将test目录下的文件text1.txt text2.txt text3.txt移动到目录mv中。

命令:

mv text1.txt text2.txt text3.txt mv

输出:

lighthouse@VM-4-14-ubuntu:~/linux-mv$ mv text1.txt text2.txt text3.txt mv
lighthouse@VM-4-14-ubuntu:~/linux-mv$ tree
.
├── mv
│   ├── text1.txt
│   ├── text2.txt
│   └── text3.txt
└── text.txt

1 directory, 4 files
lighthouse@VM-4-14-ubuntu:~/linux-mv$ 

or

 mv -t /home/lighthouse/linux-mv/ text1.txt text2.txt text3.txt 
lighthouse@VM-4-14-ubuntu:~/linux-mv/mv$ mv -t /home/lighthouse/linux-mv/ text1.txt text2.txt text3.txt 
lighthouse@VM-4-14-ubuntu:~/linux-mv/mv$ cd ..
lighthouse@VM-4-14-ubuntu:~/linux-mv$ tree
.
├── mv
├── text1.txt
├── text2.txt
├── text3.txt
└── text.txt

1 directory, 4 files

说明:mv text1.txt text2.txt text3.txt mv将text1.txt text2.txt text3.txt三个文件移到 mv 目录中,
mv -t /home/lighthouse/linux-mv/ text1.txt text2.txt text3.txt 命令又将三个文件移动到linux-mv目录中。

4、将文件file1改名为file2,如果file2已经存在,则询问是否覆盖

命令:

mv -i text.txt text2.txt

输出:

ighthouse@VM-4-14-ubuntu:~/linux-mv$ ls
mv  text2.txt  text3.txt  text.txt
lighthouse@VM-4-14-ubuntu:~/linux-mv$ mv -i text.txt text2.txt 
mv: overwrite 'text2.txt'? 

5、将文件file1改名为file2,即使file2存在,也是直接覆盖掉。

命令:

mv -f text2.txt text.txt 

输出:

lighthouse@VM-4-14-ubuntu:~/linux-mv$ ll
total 12
drwxrwxr-x 3 lighthouse lighthouse 4096 Jun 29 13:31 ./
drwxr-xr-x 5 lighthouse lighthouse 4096 Jun 29 11:29 ../
drwxrwxr-x 2 lighthouse lighthouse 4096 Jun 29 13:25 mv/
-rw-rw-r-- 1 lighthouse lighthouse    0 Jun 29 11:44 text2.txt
-rw-rw-r-- 1 lighthouse lighthouse    0 Jun 29 11:44 text3.txt
-rw-rw-r-- 1 lighthouse lighthouse    0 Jun 29 11:43 text.txt
lighthouse@VM-4-14-ubuntu:~/linux-mv$ mv -f text2.txt text.txt 
lighthouse@VM-4-14-ubuntu:~/linux-mv$ ll
total 12
drwxrwxr-x 3 lighthouse lighthouse 4096 Jun 29 13:37 ./
drwxr-xr-x 5 lighthouse lighthouse 4096 Jun 29 11:29 ../
drwxrwxr-x 2 lighthouse lighthouse 4096 Jun 29 13:25 mv/
-rw-rw-r-- 1 lighthouse lighthouse    0 Jun 29 11:44 text3.txt
-rw-rw-r-- 1 lighthouse lighthouse    0 Jun 29 11:44 text.txt

说明: log3.txt的内容直接覆盖了log2.txt内容,-f 这是个危险的选项,使用的时候一定要特别谨慎,一般情况下最好不用加上它,因为可能没有任何提示直接就执行了。

6、目录的移动

命令:

mv dir1 dir2

输出:

lighthouse@VM-4-14-ubuntu:~/linux-mv$ tree
.
├── mv
├── test
│   └── test2
├── test1
├── text3.txt
└── text.txt

4 directories, 2 files
lighthouse@VM-4-14-ubuntu:~/linux-mv$ mv test/test2/ test1
lighthouse@VM-4-14-ubuntu:~/linux-mv$ tree
.
├── mv
├── test
├── test1
│   └── test2
├── text3.txt
└── text.txt

说明:如果目录dir2不存在,将目录dir1改名为dir2;否则,将dir1移动到dir2中。

7、移动当前文件夹下的所有文件到上一级目录。

命令:

mv * ../

输出:

lighthouse@VM-4-14-ubuntu:~/linux-mv$ mv * ../
lighthouse@VM-4-14-ubuntu:~/linux-mv$ cd ..
lighthouse@VM-4-14-ubuntu:~$ tree
.
├── linux-mv
├── mv
├── test
├── test1
│   └── test2
├── test_1.txt
├── text3.txt
└── text.txt

5 directories, 3 files

8、把当前目录的一个子目录里的文件移动到另一个子目录中。

命令:

mv mv/*.txt test

输出:

lighthouse@VM-4-14-ubuntu:~$ mv *.txt mv
lighthouse@VM-4-14-ubuntu:~$ tree
.
├── linux-mv
├── mv
│   ├── test_1.txt
│   ├── text3.txt
│   └── text.txt
├── test
└── test1
    └── test2

5 directories, 3 files
lighthouse@VM-4-14-ubuntu:~$ mv mv/*.txt test
lighthouse@VM-4-14-ubuntu:~$ tree
.
├── linux-mv
├── mv
├── test
│   ├── test_1.txt
│   ├── text3.txt
│   └── text.txt
└── test1
    └── test2

5 directories, 3 files

9、文件被覆盖前做简单备份,前面加参数-b

命令:

mv log1.txt -b log2.txt

备份后,文件后面会跟一个~符号
输出:

lighthouse@VM-4-14-ubuntu:~$ cd test
lighthouse@VM-4-14-ubuntu:~/test$ ls
test_1.txt  text3.txt  text.txt
lighthouse@VM-4-14-ubuntu:~/test$ mv text3.txt -b text.txt 
lighthouse@VM-4-14-ubuntu:~/test$ ll
total 8
drwxrwxr-x 2 lighthouse lighthouse 4096 Jun 29 13:53 ./
drwxr-xr-x 8 lighthouse lighthouse 4096 Jun 29 13:50 ../
-rw-rw-r-- 1 lighthouse lighthouse    0 Jun 29 11:23 test_1.txt
-rw-rw-r-- 1 lighthouse lighthouse    0 Jun 29 11:44 text.txt
-rw-rw-r-- 1 lighthouse lighthouse    0 Jun 29 11:44 text.txt~

补充说明:

-b 不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。—backup该选项指定如果目标文件存在时的操作,共有四种备份策略:

  1. CONTROL=none或 off : 不备份。
  2. CONTROL=numbered或t:数字编号的备份
  3. CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1…n:执行mv操作前已存在以数字编号的文件log2.txt.1,那么再次执行将产生log2.txt2,以次类推。如果之前没有以数字编号的文件,则使用下面讲到的简单备份。
  4. CONTROL=simple或 never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。
  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值