• 售前

  • 售后

热门帖子
入门百科

Linux中mv命令的高级用法示例

[复制链接]
普通人物怨 显示全部楼层 发表于 2021-10-26 12:22:26 |阅读模式 打印 上一主题 下一主题
媒介
mv命令是move的缩写,可以用来移动文件大概将文件改名(move (rename) files),是Linux体系下常用的命令,常常用来备份文件大概目录。
命令格式:
  1. mv [选项] 源文件或目录 目标文件或目录
复制代码
mv 也是 Linux 下一个使用频率非常高的命令,但除了一些根本用法,你还知道它的哪些高级用法呢?
1. 根本用法
      
  • 移动一个/多个文件;  
  • 移动一个/多个目录;  
  • 重命名文件/目录。
这些都是很根本的用法,无需赘述。下面先容一些更高级的用法。
2. 打印操作信息
我们如果只移动一两个或少数几个文件/目录时,暂且还可以去目标位置去查察文件是否移动乐成。但如果有千百个文件呢?怎样在不去目标位置查察的情况下知道我们的操作是否已经乐成了呢?我们可以加上 -v 选项。
  1. [alvin@VM_0_16_centos mv_test]$ mv -v *.txt /home/alvin/test/mv_test/des/
  2. ‘file1.txt' -> ‘/home/alvin/test/mv_test/des/file1.txt'
  3. ‘file2.txt' -> ‘/home/alvin/test/mv_test/des/file2.txt'
  4. ‘file3.txt' -> ‘/home/alvin/test/mv_test/des/file3.txt'
  5. ‘file4.txt' -> ‘/home/alvin/test/mv_test/des/file4.txt'
  6. ‘file5.txt' -> ‘/home/alvin/test/mv_test/des/file5.txt'
复制代码
当然,此方法同样实用于移动目录。
3. 使用交互模式
在默认情况下,我们移动文件/目录时,不会有任何提示。如果在目标位置我们有个相同名字的文件/目录,mv 命令也不会提示而直接更换原来的文件。而这样的操作,有时大概会造成灾难性的后果。
在这种情况下,我们可以加一个 -i 选项,当目标位置有相同名字的文件时,它将会进行提示。如果你确认要覆盖目标文件,键入 y 即可。
  1. [alvin@VM_0_16_centos mv_test]$ mv -i file1.txt /home/alvin/test/mv_test/des/
  2. mv: overwrite ‘/home/alvin/test/mv_test/des/file1.txt'? y
复制代码
4. 不覆盖同名文件
如果目标位置有同名文件,我们不盼望它被覆盖,可以加上 -n 选项。
  1. [alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
  2. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt
  3. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:35 file3.txt
  4. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 des/file1.txt
  5. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:27 des/file2.txt
  6. [alvin@VM_0_16_centos mv_test]$ mv -nv *.txt /home/alvin/test/mv_test/des/
  7. ‘file3.txt' -> ‘/home/alvin/test/mv_test/des/file3.txt' #目标位置没有file3.txt文件,所以成功移动
  8. [alvin@VM_0_16_centos mv_test]$ ls
  9. des file2.txt
复制代码
5. 使用更新选项
当目标位置有同名文件/目录时,我们只盼望源文件比目标文件时间戳更新时,才进行覆盖,否则不实验。这种情况下,我们可以使用 -u 选项。
  1. [alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
  2. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file1.txt #源文件比目标文件时间戳更新
  3. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt #源文件比目标文件时间戳更旧
  4. -rw-rw-r-- 1 alvin alvin 0 Feb 8 16:53 des/file1.txt
  5. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:27 des/file2.txt
  6. [alvin@VM_0_16_centos mv_test]$ mv -uv *.txt /home/alvin/test/mv_test/des/
  7. ‘file1.txt' -> ‘/home/alvin/test/mv_test/des/file1.txt' #只有时间戳更新的文件被替换
  8. [alvin@VM_0_16_centos mv_test]$ ls
  9. des file2.txt
复制代码
6. 覆盖前创建备份
目标位置已经有了同名文件,如果直接覆盖总觉得有点不踏实,万一现在的决定是错的呢?有没大概在覆盖之前,先将目标文件进行备份?答案是肯定的,加一个 -b 选项即可。
  1. [alvin@VM_0_16_centos mv_test]$ mv -bv *.txt /home/alvin/test/mv_test/des/
  2. ‘file1.txt' -> ‘/home/alvin/test/mv_test/des/file1.txt' (backup: ‘/home/alvin/test/mv_test/des/file1.txt~')
  3. ‘file2.txt' -> ‘/home/alvin/test/mv_test/des/file2.txt' (backup: ‘/home/alvin/test/mv_test/des/file2.txt~')
  4. [alvin@VM_0_16_centos mv_test]$ ll des/
  5. total 0
  6. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:41 file1.txt
  7. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file1.txt~
  8. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt
  9. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:27 file2.txt~
  10. -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:35 file3.txt
复制代码
可以看到,在覆盖之前,会将目标文件备份为一个带波浪号 ~ 的文件,同时细心的读者也会留意到,覆盖后文件与备份文件的时间戳不一样。
以上就是 mv 命令的一些更高级用法,灵活使用的话会为自己的工作服从进步一个档次,在同事眼前也更能装逼。
总结
以上就是这篇文章的全部内容了,盼望本文的内容对大家的学习大概工作具有一定的参考学习代价,谢谢大家对草根技能分享的支持。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作