当前位置: 首页 > 科技观察

如何在Linux下移动?

时间:2023-03-15 19:07:21 科技观察

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:overwrite'/home/alvin/test/mv_test/des/file1.txt'?y4。不覆盖同名文件如果target位置有同名文件,我们不想覆盖,可以加上-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#源文件比目标文件时间戳-rw-rw-r--1alvinalvin0Feb817:26file2更新。txt#源文件早于目标文件时间戳-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'(backup:'/home/alvin/test/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可以看到在覆盖之前,目标文件会被备份up这是一个带有波浪号~的文件。同时,细心的读者还会注意到,覆盖文件的时间戳与备份文件的时间戳不同。以上是mv命令的一些更高级的用法。灵活运用,会让你的工作效率更上一层楼,也能在同事面前大显身手。本文经授权转载自公众号“良墟Linux”。世界500强外企Linux开发工程师梁旭,在公众号分享大量Linux干货,欢迎关注!