mv 在Linux中也是一个非常常用的命令,但是除了一些基本用法之外,你还知道哪些高级用法呢?
1. 基本使用
移动一个/多个文件;
移动一个/多个目录;
重命名文件/目录。
这些都是非常基本的用法,不需要进一步解释。这里有一些更高级的用途。
2、打印操作信息
如果我们只移动一两个或几个文件/目录,我们可以暂时去目标位置查看文件是否移动成功。但如果有数百个文件怎么办?不去目标地点查看,如何知道我们的操作是否成功呢?我们可以添加 -v 选项。
[alvin@VM_0_16_centos mv_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_centos mv_test]$ mv -i file1.txt /home/alvin/test/mv_test/des/ mv: 覆盖‘/home/alvin/test/mv_test/des/file1.txt’? y
4.不要覆盖同名文件如果目标位置存在同名文件并且我们不希望它被覆盖,我们可以添加 -n 选项。
[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt -rw-rw-r -rw-rw-r -rw-rw-r -rw-rw-r [alvin@VM_0_16_centos mv_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_centos mv_test]$ ls des file2.txt
5.使用更新选项
当目标位置存在同名文件/目录时,我们只希望如果时间戳比目标文件新,则覆盖源文件,否则不会执行。在这种情况下,我们可以使用-u选项。
[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt -rw-rw-r -rw-rw-r -rw-rw-r -rw-rw-r [alvin@VM_0_16_centos mv_test]$ mv -uv *.txt /home/alvin/test/mv_test/des/ 'file1.txt' -> '/home/alvin/test/mv_test/des/file1.txt' #仅替换具有更新时间戳的文件 [alvin@VM_0_16_centos mv_test ]$ ls des file2.txt
6.覆盖前创建备份
目标位置已存在同名文件。直接覆盖感觉有点不靠谱。如果当前的决定是错误的怎么办?覆盖之前是否可以备份目标文件?答案是肯定的,加一个-b选项。[alvin@VM_0_16_centos mv_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/ test/mv_test/des/file2.txt~') [alvin@VM_0_16_centos mv_test]$ ll des/ 总计 0 -rw-rw-r -rw-rw-r -rw-rw-r -rw-rw-r -rw -rw-r
可以看到,在覆盖之前,目标文件会被备份为带有波浪号~的文件。细心的读者还会注意到,被覆盖文件的时间戳与备份文件的时间戳不同。
以上是mv命令的一些更高级的用法。如果你灵活运用它们,你的工作效率将会提高一个台阶,你将能够更好地在同事面前炫耀。
本文经公众号“良旭Linux”许可转载。某世界500强外企的Linux开发工程师Liangxu,在公众号分享了很多有用的Linux资讯,欢迎关注!