共计 3085 个字符,预计需要花费 8 分钟才能阅读完成。
自动写代码机器人,免费开通
这篇文章主要介绍了如何在 Linux 下使用 mv 命令,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。
mv 也是 Linux 下一个使用频率非常高的命令,但除了一些基本用法,你还知道它的哪些高级用法呢?
1. 基本用法
移动一个 / 多个文件;
移动一个 / 多个目录;
重命名文件 / 目录。
这些都是很基本的用法,无需赘述。下面介绍一些更高级的用法。
2. 打印操作信息
我们如果只移动一两个或少数几个文件 / 目录时,暂且还可以去目标位置去查看文件是否移动成功。但如果有千百个文件呢? 如何在不去目标位置查看的情况下知道我们的操作是否已经成功了呢? 我们可以加上 -v 选项。
[alvin@VM_0_16_centos mv_test]$ mv -v *.txt /home/alvin/test/mv_test/des/ lsquo;file1.txt rsquo; - lsquo;/home/alvin/test/mv_test/des/file1.txt rsquo; lsquo;file2.txt rsquo; - lsquo;/home/alvin/test/mv_test/des/file2.txt rsquo; lsquo;file3.txt rsquo; - lsquo;/home/alvin/test/mv_test/des/file3.txt rsquo; lsquo;file4.txt rsquo; - lsquo;/home/alvin/test/mv_test/des/file4.txt rsquo; lsquo;file5.txt rsquo; - lsquo;/home/alvin/test/mv_test/des/file5.txt rsquo;
当然,此方法同样适用于移动目录。
3. 使用交互模式
在默认情况下,我们移动文件 / 目录时,不会有任何提示。如果在目标位置我们有个相同名字的文件 / 目录,mv 命令也不会提示而直接替换原来的文件。而这样的操作,有时可能会造成灾难性的后果。
在这种情况下,我们可以加一个 -i 选项,当目标位置有相同名字的文件时,它将会进行提示。如果你确认要覆盖目标文件,键入 y 即可。
[alvin@VM_0_16_centos mv_test]$ mv -i file1.txt /home/alvin/test/mv_test/des/ mv: overwrite lsquo;/home/alvin/test/mv_test/des/file1.txt rsquo;? y
4. 不覆盖同名文件
如果目标位置有同名文件,我们不希望它被覆盖,可以加上 -n 选项。
[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:35 file3.txt -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 des/file1.txt -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:27 des/file2.txt [alvin@VM_0_16_centos mv_test]$ mv -nv *.txt /home/alvin/test/mv_test/des/ lsquo;file3.txt rsquo; - lsquo;/home/alvin/test/mv_test/des/file3.txt rsquo; # 目标位置没有 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-- 1 alvin alvin 0 Feb 8 17:26 file1.txt #源文件比目标文件时间戳更新 -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt # 源文件比目标文件时间戳更旧 -rw-rw-r-- 1 alvin alvin 0 Feb 8 16:53 des/file1.txt -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:27 des/file2.txt [alvin@VM_0_16_centos mv_test]$ mv -uv *.txt /home/alvin/test/mv_test/des/ lsquo;file1.txt rsquo; - lsquo;/home/alvin/test/mv_test/des/file1.txt rsquo; # 只有时间戳更新的文件被替换 [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/ lsquo;file1.txt rsquo; - lsquo;/home/alvin/test/mv_test/des/file1.txt rsquo; (backup: lsquo;/home/alvin/test/mv_test/des/file1.txt~ rsquo;) lsquo;file2.txt rsquo; - lsquo;/home/alvin/test/mv_test/des/file2.txt rsquo; (backup: lsquo;/home/alvin/test/mv_test/des/file2.txt~ rsquo;) [alvin@VM_0_16_centos mv_test]$ ll des/ total 0 -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:41 file1.txt -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file1.txt~ -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:27 file2.txt~ -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:35 file3.txt
可以看到,在覆盖之前,会将目标文件备份为一个带波浪号 ~ 的文件,同时细心的读者也会注意到,覆盖后文件与备份文件的时间戳不一样。
感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“如何在 Linux 下使用 mv 命令”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!
向 AI 问一下细节
丸趣 TV 网 – 提供最优质的资源集合!