Linux下mv命令高级用法

阅读: 评论:0

Linux下mv命令高级用法

Linux下mv命令高级用法

mv 也是 Linux 下一个使用频率非常高的命令,但除了一些基本用法,你还知道它的哪些高级用法呢?

1. 基本用法
  1. 移动一个/多个文件;
  2. 移动一个/多个目录;
  3. 重命名文件/目录。

这些都是很基本的用法,无需赘述。下面介绍一些更高级的用法。

2. 打印操作信息

我们如果只移动一两个或少数几个文件/目录时,暂且还可以去目标位置去查看文件是否移动成功。但如果有千百个文件呢?如何在不去目标位置查看的情况下知道我们的操作是否已经成功了呢?我们可以加上 -v 选项。

[alvin@VM_0_16_centos mv_test]$ mv -v *.txt /home/alvin/test/mv_test/des/
‘’ -> ‘/home/alvin/test/mv_test/’
‘’ -> ‘/home/alvin/test/mv_test/’
‘’ -> ‘/home/alvin/test/mv_test/’
‘’ -> ‘/home/alvin/test/mv_test/’
‘’ -> ‘/home/alvin/test/mv_test/’

当然,此方法同样适用于移动目录。

3. 使用交互模式

在默认情况下,我们移动文件/目录时,不会有任何提示。如果在目标位置我们有个相同名字的文件/目录,mv 命令也不会提示而直接替换原来的文件。而这样的操作,有时可能会造成灾难性的后果。

在这种情况下,我们可以加一个 -i 选项,当目标位置有相同名字的文件时,它将会进行提示。如果你确认要覆盖目标文件,键入 y 即可。

[alvin@VM_0_16_centos mv_test]$ mv - /home/alvin/test/mv_test/des/
mv: overwrite ‘/home/alvin/test/mv_test/’? y
4. 不覆盖同名文件

如果目标位置有同名文件,我们不希望它被覆盖,可以加上 -n 选项。

[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:26 
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:27 
[alvin@VM_0_16_centos mv_test]$ mv -nv *.txt /home/alvin/test/mv_test/des/
‘’ -> ‘/home/alvin/test/mv_test/’    #目标位置没有文件,所以成功移动
[alvin@VM_0_16_centos mv_test]$ ls
des  
5. 使用更新选项

当目标位置有同名文件/目录时,我们只希望源文件比目标文件时间戳更新时,才进行覆盖,否则不执行。这种情况下,我们可以使用 -u 选项。

[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:    #源文件比目标文件时间戳更新
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:    #源文件比目标文件时间戳更旧
-rw-rw-r-- 1 alvin alvin 0 Feb  8 16:53 
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:27 
[alvin@VM_0_16_centos mv_test]$ mv -uv *.txt /home/alvin/test/mv_test/des/
‘’ -> ‘/home/alvin/test/mv_test/’    #只有时间戳更新的文件被替换
[alvin@VM_0_16_centos mv_test]$ ls
des  
6. 覆盖前创建备份

目标位置已经有了同名文件,如果直接覆盖总觉得有点不踏实,万一现在的决定是错的呢?有没可能在覆盖之前,先将目标文件进行备份?答案是肯定的,加一个 -b 选项即可。

[alvin@VM_0_16_centos mv_test]$ mv -bv *.txt /home/alvin/test/mv_test/des/
‘’ -> ‘/home/alvin/test/mv_test/’ (backup: ‘/home/alvin/test/mv_test/~’)
‘’ -> ‘/home/alvin/test/mv_test/’ (backup: ‘/home/alvin/test/mv_test/~’)
[alvin@VM_0_16_centos mv_test]$ ll des/
total 0
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:~
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:~
-rw-rw-r-- 1 alvin alvin 0 Feb  8 17:

可以看到,在覆盖之前,会将目标文件备份为一个带波浪号 ~ 的文件,同时细心的读者也会注意到,覆盖后文件与备份文件的时间戳不一样。

以上就是 mv 命令的一些更高级用法,灵活使用的话会为自己的工作效率提高一个档次,在同事面前也更能装逼。

最后,最近很多小伙伴找我要Linux学习路线图,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:

免费送给大家,只求大家金指给我点个赞!

电子书 | Linux开发学习路线图

也希望有小伙伴能加入我,把这份电子书做得更完美!

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 神器 | 支持搜索的资源网站

本文发布于:2024-02-03 03:07:55,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170690087748247.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:命令   高级   Linux   mv
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23