如何在 Linux 下乾坤大挪移?

news/2024/7/5 0:39:26

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

mv 也是 Linux 下一个使用频率非常高的命令,但除了一些基本用法,你还知道它的哪些高级用法呢?

 

mv 也是 Linux 下一个使用频率非常高的命令,但除了一些基本用法,你还知道它的哪些高级用法呢?

1. 基本用法

  1. 移动一个/多个文件;
  2. 移动一个/多个目录;
  3. 重命名文件/目录。

这些都是很基本的用法,无需赘述。下面介绍一些更高级的用法。

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 命令的一些更高级用法,灵活使用的话会为自己的工作效率提高一个档次,在同事面前也更能装逼。

转载于:https://my.oschina.net/u/3371661/blog/3016447


http://www.niftyadmin.cn/n/2199350.html

相关文章

Centos 7.6 下利用ansible自动化安装httpd服务

一、ansible简介   ansible是一款由python语言编写的一款自动化运维工具,它集合了众多运维工具(puppet、cfengine、chef、func、fabric)优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。它的创始人,Mic…

[vue]div高度height:100%不生效

2019独角兽企业重金招聘Python工程师标准>>> 解决了!除了设置app为100%template里第一个div就要100%https://segmentfault.com/a/1190000015789623https://blog.csdn.net/weixin_39973810/article/details/78549526 原理 App.vue// 高度百分百 html,body…

Httpd基础之搭建httpd服务器并提供两个基于名称的虚拟主机

说明 所谓虚拟主机不外乎就是一个物理主机上存在多个虚拟站点;通常httpd的虚拟主机有三类,分别是基于ip的虚拟主机、基于端口的虚拟主机以及基于FQDN的虚拟主机;不难理解基于ip的虚拟主机就是以不同IP来区分不同的虚拟主机;基于端…

JDK中的动态代理机制

定义 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 事例 小明是一个程序员,在公司负责项目的研发工作。有一天,客户打电话进来,沟通之后,原来客户是有个模块需求要变动一下。小明却没有应允,而…

Linux 搭建私有CA证书服务器之超详细版本

一、CA简介 CA是什么?CA是Certificate Authority的简写,从字面意思翻译过来是凭证管理中心,认证授权。它有点类似我们生活中的身份证颁发机构,这里的CA就相当于生活中颁发身份证的机构。不同于生活中的颁发机构,这里的…

Linux部署分离的LAMP

两台主机: 一台192.168.6.129安装apache httpd mariadb; 一台192.168.6.130 安装php-fpm 在192.168.6.129上安装httpd 和mariadb [roothost1 yum.repos.d]# yum install httpd -y [roothost1 ~]# yum install MariaDB-server -y测试httpd mariadb服务…

Centos 7实现mariadb-10.2.25二进制源码编译

源码包:mariadb-10.2.25 主机 192.168.6.130 1.安装依赖包: [roothost2 data]# yum install yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c cmake ncurses-devel gnutls-devel libxml2-devel openss…

Centos 部署分离LAMP架构和实现wordpress安装

主机:两台CentOS7系统主机,一台实现apachephp (host1:192.168.6.129),一台实现mariadb (host2:192.168.6.130) 所需源码包: httpd-2.4.39.tar.bz2,php-7.3.12.tar.bz2,apr-1.7.0.tar.bz2,apr-u…