linux mv工作原理,linux 中mv命令

mv 命令是一个与cp类似的命令,但是它并非创建文件或目录的复制品/副本。不管你在使用什么版本的Linux系统,mv 都默认安装在你的Linux系统上了。来看一下 mv 命令在日常操作中的一些例子。

1.移动文件

移动文件时需要注意的是文件的源地址和目标地址必须不同。这里有个例子,想要将file_1.txt文件从当前目录移动到其它目录,以/home/pungki/为例,语法应该如下:

$ mv file_1.txt /home/pungki/office

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzEzNTk1NWljem80c2I0bzN6M3N5NG4ucG5n.jpg

mv command

如我们所见,当我们移动 file_1.txt 文件时,先前目录的 file_1.txt 就被删除了。

2.移动多个文件

如果想一次移动多个文件,我们可以将他们放在一行并用空格分开。

$ mv file_2.txt file_3.txt file_4.txt /home/pungki/office

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzEzNTk1N25xZWtnNHJlM3RncWxmc3IucG5n.jpg

Move multiple files

如果你的文件有规律可循的话那么你就可以使用通配符。比如,为了移除所有以.txt为扩展名的文件,我们可以用下面的命令:

$ mv *.txt /home/pungki/office

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzEzNTk1OHdlaGRhcHZoemhqZGpodjEucG5n.jpg

Move using pattern

3.移动目录

不同于复制命令,用 mv 命令移动目录相当直接。移动目录你可以使用不带选项的 mv 命令。看下面的截图就一目了然了。

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzEzNTk1OWtkd28zazJrZGR3ZDN6d28ucG5n.jpg

Moving directory

4.重命名文件或目录

我们也用 mv 命令来重命名文件或目录。不过目标位置和源位置必须相同才可以。然后文件名必须不同。

假定我们当前所在目录为/home/pungki/Documents,而我们想将file_1.txt重命名为file_2.txt。那么命令应该如下:

$ mv file_1.txt file_2.txt

如果是绝对路径,它应该像下面这样:

$ mv /home/pungki/Documents/file_1.txt /home/pungki/Documents/file_2.txt

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzE0MDAwMXJnZ2dwOGw1cWNwOHRsMWcucG5n.jpg

Renaming file

5. 重命名目录

上一段的规则同样适用于目录。请看这个例子:

$ mv directory_1/ directory_2/

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzE0MDAwMm9wZDl4eWliOXlsZG1tbXAucG5n.jpg

Renaming directory

6. 打印移动信息

当你移动或重命名一大堆文件或目录时,你可能会想在不去目标位置去查看的情况下知道你自己的命令是否成功地执行了。这就要用到-v选项了。

$ mv -v *.txt /home/pungki/office

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzE0MDAwM2h5eXJ3NjE4a2UwbHNud2gucG5n.jpg

mv with verbose mode

该方法同样适用于目录。

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzE0MDAwNHdmdnR2dmt2Zmt2cGg0cGcucG5n.jpg

mv directory with verbose mode

7. 使用交互模式

当你将文件移动到其它位置,而那个位置恰好有同样的文件,这时 mv 命令会覆盖掉原来的文件。对于mv的这一行为一般不会有什么提示。如果想产生一个关于覆盖文件的提示,我们可以使用-i选项。(译注:通常发行版会通过alias命令,将-i作为默认选项,所以会有提示。)

假设我们想将 file_1.txt 移动到 /home/pungki/office。同时,/home/pungki/office 目录下已经有file_1.txt文件了。

$ mv -i file_1.txt /home/pungki/office

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzE0MDAwNXVrOWl6emtkY3p6dmlja3gucG5n.jpg

mv with interactive mode

这个提示会让我们知道目标位置处file_1.txt的存在。如果我们按y键,那么那个文件将会被删除,否则不会。

8. 使用更新选项

-i 选项会提示我们关于覆盖文件的提示,而 -u 则只在源文件比目标文件新时才执行更新。让我们看一看下面的例子:

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzE0MDAwN3EwN283d3p3aHZkbzdsazcucG5n.jpg

Update only newer

假如 file_1.txt 和 file_2.txt有如下特点:

File_1.txt has 84 bytes file size and it last modified time is 12:00

File_2.txt has 0 bytes file size and it last modified time is 11:59

我们想将它们移动到 /home/pungki/office 目录下。但是目标地址已经有file_1.txt和file_2.txt了。

我们用下面的命令将file_1.txt 和file_2.txt从当前目录移动到/home/pungki/office

$ mv -uv *.txt /home/pungki/office

可以看到这些文件被移动了。能移动这些文件是因为它们最近的修改时间戳比 /home/pungki/office 目录中的文件新。

9.不要覆盖任何已存在的文件

如果-i选项询问我们是否要覆盖文件,那么 -n 选项将不会允许我们覆盖任何已存在的文件。

继续使用第8点中的例子,如果我们将-u 换成 -n同时加上-v选项,那么我们会看到没有任何文件移动到了 /home/pungki/office 目录下。

$ mv -vn *.txt /home/pungki/office

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzE0MDAwOGV6MzN2cWZzYzV5M292M3MucG5n.jpg

No overwrite

10. 复制时创建备份

默认情况下,移动文件将会覆盖已存在的目标文件。但是如果我们移动错了文件而目标文件已经被新的文件覆盖了,这时应该怎么办才好呢?有没有一种方法可以恢复之前的文件呢?答案是肯定的。我们可以用-b选项。该选项会在新文件覆盖旧文件时将旧文件做备份。这里我们还以第8点为例。

$ mv -bv *.txt /home/pungki/office

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNDAzLzE0LzE0MDAxMGN3N2F3YTZ3cDZ3eGo2anMucG5n.jpg

Backup option

如截图中所见,在 /home/pungki/office 目录下出现了名为file_1.txt~ 和 file_2.txt~ 的文件。那个波浪符号(~)意味着这些文件是备份文件。从它们的属性中我们可以看到,这些文件比file_1.txt和file_2.txt要旧。

11. 无条件覆盖已经存在的文件

(译注:这一节是译者补充的,原文遗漏了这个重要选项)

当你希望无论如何都覆盖已经存在的文件或目录时,你可以使用 -f 选项。如果同时指定了 -f 选项和 -i 或 -n 选项,则 -f 选项会覆盖它们——即不进行任何提示而覆盖,所以,在使用此参数时,知道你在做什么。

$ mv -f *.txt /home/pungki/office

总结

移动文件和目录命令是Linux系统的基本命令。通常你可以通过man mv 或者 mv --help显示mv的手册页以了解更多详细信息。

linux中mv命令使用详解

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目 ...

Linux中exec命令相关

Linux中exec命令相关 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. b ...

linux中touch命令参数修改文件的时间戳(转)

linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法: touch [-acm][-r ...

linux中执行命令权限不够怎样处理

在linux中执行命令权限不够就要增加权限,先看遇到的情况 查看权限情况 那就赋予权限 执行命令

Linux中监控命令top命令使用方法详解

收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就 ...

Linux中date命令的各种实用方法--转载

在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,自己也曾经为时间的各种表示方法和如何修改时间而困惑,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的 ...

linux中查找命令find、locate、whereis、which、type区别

linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...

Linux中service命令和/etc/init.d/的关系

Linux中service命令和/etc/init.d/的关系   service xxx启动 /etc/init.d/ 目录下的xxx脚本 如一个脚本名为 mysvc保存在/etc/init.d/下 ...

13 Basic Cat Command Examples in Linux(转) Linux中cat命令的13中基本用法

Cat (串联) 命令是Linux/Unix开源系统中比较常用的一个命令.我们可以通过Cat命令创建一个或多个文件,查看文件内容,串联文件并将内容输出到终端设备或新的文件当中,这篇文章我们将会以实例的 ...

随机推荐

C语言实现线程池

以前写过一篇关于如何使用多线程推升推送速度(http://www.cnblogs.com/bai-jimmy/p/5177433.html),能够到达5000qps,其实已经可以满足现在的业务,不过在 ...

JdbcTemplate主要提供以下五类方法:

execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句: update方法及batchUpdate方法:update方法用于执行新增.修改.删除等语句:batchUpdate方法用于执 ...

SpringMVC 学习笔记(两) @RequestMapping、@PathVariable和其他注意事项

1.1. @RequestMapping映射请求 SpringMVC 采用 @RequestMapping 注解为控制器指定能够处理那些URL 请求 @requestMapping  能够定义在 类  ...

基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二)

基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二) 之前文章中给大家说明了下我这个小小的想法,发现还是有不少人的支持和关注.你们的鼓励是对我最大的支持. 我总结了了 ...

C#开发学习——web服务器端控件

Asp.net在客户端开发和web开发所用到的控件还是有很大的差别的,而且Web开发的界面是在浏览器中显示的,所以控件的设计都和前边学习HTML设计有联系,没有客户端开发那么简单,不过我们可以 ...

R语言数据结构

5. 数据结构 5.1 数据结构简介 (1)向量 一个向量的所有元素必须有相同的类型(模式) (2)列表 列表可以非同质的 列表可按位置索引:lst[[2]] 抽取子列表:lst[c(2,5)] 列表 ...

jdk12+tomcat9 配置

jdk12 没有了jre的配置   直接配置path就可以了 tomcat常规配置,只是启动的时候麻烦一点   需要重新写入jdk jre jvm 到server.bat文件 参考文章: https: ...

【mmall】Jackson相关知识点

Jackson fasterxml和codehaus的区别 (fasterxml vs. codehaus) http://blog.csdn.net/clementad/article/detail ...

Zipkin和Brave实现http服务调用的跟踪

使用Zipkin和Brave实现http服务调用的跟踪,Brave 是用来装备Java程序的类库,提供了面向标准Servlet.Spring MVC.Http Client.JAX RS.Jersey ...

简单的分页小demo

public class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Sy ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值