mv也是Linux下使用频率很高的一个命令,但是除了一些基本用法,你还知道它的高级用法吗?1.基本用法移动一个/多个文件;移动一个/多个目录;重命名文件/目录。这些都是很基础的用法,不用赘述。下面介绍一些更高级的用法。2、打印操作信息如果我们只移动一个或两个或几个文件/目录,我们可以到目标位置查看文件是否移动成功。但是如果有数百个文件怎么办?如果不检查目标位置,如何知道我们的操作是否成功?我们可以添加-v选项。[alvin@VM_0_16_centosmv_test]$mv-v*.txt/home/alvin/test/mv_test/des/'file1.txt'->'/home/alvin/test/mv_test/des/file1.txt''file2.txt'->'/home/alvin/test/mv_test/des/file2.txt''file3.txt'->'/home/alvin/test/mv_test/des/file3.txt''file4.txt'->'/home/alvin/test/mv_test/des/file4.txt''file5.txt'->'/home/alvin/test/mv_test/des/file5.txt'当然这个方法也适用于移动目录.3.使用交互模式默认情况下,当我们移动文件/目录时,是不会有提示的。如果我们在目标位置有同名的文件/目录,mv命令会直接替换掉原来的文件,不会提示。而这样的操作有时会带来灾难性的后果。这种情况下,我们可以加一个-i选项,当目标位置有同名文件时会提示。如果您确定要覆盖目标文件,只需键入y。[alvin@VM_0_16_centosmv_test]$mv-ifile1.txt/home/alvin/test/mv_test/des/mv:覆盖'/home/alvin/test/mv_test/des/file1.txt'?y4。不覆盖同名文件如果目标位置存在同名文件,我们不想覆盖,可以加上-n选项。[alvin@VM_0_16_centosmv_test]$ll*.txtdes/*.txt-rw-rw-r--1alvinalvin0Feb817:26file2.txt-rw-rw-r--1alvinalvin0Feb817:35file3.txt-rw-rw-r--1alvinalvin0Feb817:26des/file1.txt-rw-rw-r--1alvinalvin0Feb817:27des/file2.txt[alvin@VM_0_16_centosmv_test]$mv-nv*.txt/home/alvin/test/mv_test/des/'file3.txt'->'/home/alvin/test/mv_test/des/file3.txt'#目标位置没有file3.txt文件,所以成功移动[alvin@VM_0_16_centosmv_test]$lsdesfile2.txt5。使用更新选项。当目标位置存在同名文件/目录时,我们只希望目标文件的时间戳较新时覆盖源文件,否则不执行。在这种情况下,我们可以使用-u选项。[alvin@VM_0_16_centosmv_test]$ll*.txtdes/*.txt-rw-rw-r--1alvinalvin0Feb817:26file1.txt#源文件比目标文件新timestamp-rw-rw-r--1alvinalvin0Feb817:26file2.txt#源文件比目标文件旧timestamp-rw-rw-r--1alvinalvin0Feb816:53des/file1.txt-rw-rw-r--1alvinalvin0Feb817:27des/file2.txt[alvin@VM_0_16_centosmv_test]$mv-uv*.txt/home/alvin/test/mv_test/des/'file1.txt'->'/home/alvin/test/mv_test/des/file1.txt'#只有更新了时间戳的文件才会被替换[alvin@VM_0_16_centosmv_test]$lsdesfile2.txt6.在覆盖之前创建一个备份目标位置已经有同名文件,如果直接覆盖总感觉有点不靠谱。如果当前的决定是错误的怎么办?是否可以在覆盖之前备份目标文件?答案是肯定的,加一个-b选项即可。[alvin@VM_0_16_centosmv_test]$mv-bv*.txt/home/alvin/test/mv_test/des/'file1.txt'->'/home/alvin/test/mv_test/des/file1.txt'(备份:'/home/alvin/test/mv_test/des/file1.txt~')'file2.txt'->'/home/alvin/test/mv_test/des/file2.txt'(备份:'/home/alvin/测试/mv_test/des/file2.txt~')[alvin@VM_0_16_centosmv_test]$lldes/total0-rw-rw-r--1alvinalvin0Feb817:41file1.txt-rw-rw-r--1alvinalvin0Feb817:26file1.txt~-rw-rw-r--1alvinalvin0Feb817:26file2.txt-rw-rw-r--1alvinalvin0Feb817:27file2.txt~-rw-rw-r--1alvinalvin0Feb817:35file3.txt可以看到在覆盖之前,目标文件会被备份为一个波浪号~的文件,并且是细心的读者还会注意到,被覆盖文件的时间戳与备份文件的时间戳不同。以上是mv命令的一些更高级的用法。如果灵活运用,你的工作效率会更上一层楼,在同事面前也会更有攻击性。最后,最近有很多朋友找我要一份Linux学习路线图,所以我结合自己的经验,利用业余时间熬夜一个月,整理了一本电子书。无论你是面试还是自我提升,相信都会对你有所帮助!免费送给大家,只求大家给我点个赞!电子书|LinuxDevelopmentLearningRoadmap也希望有小伙伴可以加入我的行列,把这本电子书做得更加完美!获得?希望老铁们来个三连击,让更多人看到这篇文章。推荐阅读:干货|程序员和高级架构师免费发送工件的必备资源|支持搜索的资源网站
