zoukankan      html  css  js  c++  java
  • linux每日命令(8):mv命令

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

    一.命令格式:

    mv [选项] 源文件或目录 目标文件或目录
    

    二.命令功能:

    视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

    三.命令参数:

    选项 描述
    -b 若需覆盖文件,则覆盖前先行备份。
    -f force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    -i 若目标文件 (destination) 已经存在时,就会询问是否覆盖!
    -u 若目标文件已经存在,且 source 比较新,才会更新(update)
    -t 即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

    四.命令实例:

    1.将文件file1.txt重命名为file2.txt

    命令:

    mv file1.txt   file2.txt
    

    输出:

    hc@hc-virtual-machine:~/test$ ls
    file1.txt
    hc@hc-virtual-machine:~/test$ mv file1.txt file2.txt 
    hc@hc-virtual-machine:~/test$ ls
    file2.txt
    

    2.将文件file2.txt移动到目录dir1中

    命令:

    mv file2.txt dir1
    

    输出:

    hc@hc-virtual-machine:~/test$ tree ../test/
    ../test/
    ├── dir1
    │   └── log1
    └── file2.txt
    
    1 directory, 2 files
    hc@hc-virtual-machine:~/test$ mv file2.txt dir1
    hc@hc-virtual-machine:~/test$ tree ../test/
    ../test/
    └── dir1
        ├── file2.txt
        └── log1
    
    1 directory, 2 files
    

    3.将文件log1重命名为log2,如果log2已经存在,则询问是否覆盖

    命令

    mv -i log1 log2 
    

    输出:

    hc@hc-virtual-machine:~/test/dir1$ ls
    file2.txt  log1  log2
    hc@hc-virtual-machine:~/test/dir1$ cat log1
    I'm log1
    hc@hc-virtual-machine:~/test/dir1$ cat log2
    I'm log2
    hc@hc-virtual-machine:~/test/dir1$ mv -i log1 log2 
    mv:是否覆盖'log2'? y
    hc@hc-virtual-machine:~/test/dir1$ ls
    file2.txt  log2
    hc@hc-virtual-machine:~/test/dir1$ cat log2 
    I'm log1
    hc@hc-virtual-machine:~/test/dir1$ 
    

    4.将文件log2重命名为log3,无论log3是否存在,不进行询问,直接覆盖

    命令:

    mv -f log2 log3
    

    输出:

    hc@hc-virtual-machine:~/test/dir1$ touch log3
    hc@hc-virtual-machine:~/test/dir1$ vim log3
    hc@hc-virtual-machine:~/test/dir1$ ls
    file2.txt  log2  log3
    hc@hc-virtual-machine:~/test/dir1$ cat log2
    I'm log1
    hc@hc-virtual-machine:~/test/dir1$ cat log3
    I'm log3
    hc@hc-virtual-machine:~/test/dir1$ mv -f log2 log3
    hc@hc-virtual-machine:~/test/dir1$ ls
    file2.txt  log3
    hc@hc-virtual-machine:~/test/dir1$ cat log3 
    I'm log1
    

    说明:

    -f 这是个危险的选项,使用的时候一定要保持头脑清晰,一般情况下最好不用加上它。

    5. 将目录dir1移动到目录dir2中

    命令:

    mv dir1 dir2
    

    输出:

    hc@hc-virtual-machine:~/test$ ls
    dir1
    hc@hc-virtual-machine:~/test$ mkdir dir2
    hc@hc-virtual-machine:~/test$ tree ../test/
    ../test/
    ├── dir1
    │   ├── file2.txt
    │   └── log3
    └── dir2
    
    2 directories, 2 files
    hc@hc-virtual-machine:~/test$ mv dir1 dir2
    hc@hc-virtual-machine:~/test$ tree ../test/
    ../test/
    └── dir2
        └── dir1
            ├── file2.txt
            └── log3
    
    2 directories, 2 files
    hc@hc-virtual-machine:~/test$ 
    

    6.将目录dir2重命名为dir3

    命令:

    mv dir2 dir3
    

    输出:

    hc@hc-virtual-machine:~/test$ ls
    dir2
    hc@hc-virtual-machine:~/test$ mv dir2 dir3
    hc@hc-virtual-machine:~/test$ tree ../test/
    ../test/
    └── dir3
        └── dir1
            ├── file2.txt
            └── log3
    
    2 directories, 2 files
    hc@hc-virtual-machine:~/test$ 
    

    说明:
    当进行目录移动时,如果目标目录名存在,则将源目录移动到目标目录下,成为目标目录的子目录;如果目标目录不存在,则进行重命名操作

    7. 移动当前文件夹下的所有文件到上一级目录

    命令:

    mv * ../
    

    输出:

    hc@hc-virtual-machine:~/test$ tree dir3/
    dir3/
    └── dir1
        ├── file2.txt
        └── log3
    
    1 directory, 2 files
    hc@hc-virtual-machine:~/test$ cd dir3/
    hc@hc-virtual-machine:~/test/dir3$ ls
    dir1
    hc@hc-virtual-machine:~/test/dir3$ cd dir1/
    hc@hc-virtual-machine:~/test/dir3/dir1$ ls
    file2.txt  log3
    hc@hc-virtual-machine:~/test/dir3/dir1$ mv * ../
    hc@hc-virtual-machine:~/test/dir3/dir1$ ls
    hc@hc-virtual-machine:~/test/dir3/dir1$ cd ..
    hc@hc-virtual-machine:~/test/dir3$ ls
    dir1  file2.txt  log3
    hc@hc-virtual-machine:~/test/dir3$ tree ../dir3
    ../dir3
    ├── dir1
    ├── file2.txt
    └── log3
    
    1 directory, 2 files
    hc@hc-virtual-machine:~/test/dir3$ 
    

    8.将目录dir3下的所有内容移到dir2目录下

    命令:

    mv dir3/* dir2
    

    输出:

    hc@hc-virtual-machine:~/test$ tree ../test/
    ../test/
    ├── dir2
    └── dir3
        ├── dir1
        ├── file2.txt
        └── log3
    
    3 directories, 2 files
    hc@hc-virtual-machine:~/test$ ls
    dir2  dir3
    hc@hc-virtual-machine:~/test$ mv dir3/* dir2
    hc@hc-virtual-machine:~/test$ ls
    dir2  dir3
    hc@hc-virtual-machine:~/test$ tree ../test/
    ../test/
    ├── dir2
    │   ├── dir1
    │   ├── file2.txt
    │   └── log3
    └── dir3
    
    3 directories, 2 files
    hc@hc-virtual-machine:~/test$ 
    

    9.将当前目录(dir2)下的dir1,file2.txt,log3移动到dir3目录下

    命令:

    mv -t ../dir3   dir1 file2.txt  log3
    

    输出:

    hc@hc-virtual-machine:~/test$ tree ../test/
    ../test/
    ├── dir2
    │   ├── dir1
    │   ├── file2.txt
    │   └── log3
    └── dir3
    hc@hc-virtual-machine:~/test$ cd dir2
    hc@hc-virtual-machine:~/test/dir2$ ls
    dir1  file2.txt  log3
    hc@hc-virtual-machine:~/test/dir2$ mv -t ../dir3   dir1 file2.txt  log3 
    hc@hc-virtual-machine:~/test/dir2$ tree ../../test/
    ../../test/
    ├── dir2
    └── dir3
        ├── dir1
        ├── file2.txt
        └── log3
    
    3 directories, 2 files
    hc@hc-virtual-machine:~/test/dir2$ 
    

    说明:

    -t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

    10.将log3重命名为log2对log2进行的内容进行覆盖,并给log2源内容进行备份

    命令:

    mv log3 -b log2
    

    输出:

    hc@hc-virtual-machine:~/test/dir3$ ls
    dir1  file2.txt  log2  log3
    hc@hc-virtual-machine:~/test/dir3$ cat log2
    2
    hc@hc-virtual-machine:~/test/dir3$ cat log3
    I'm log1
    hc@hc-virtual-machine:~/test/dir3$ mv log3 -b log2
    hc@hc-virtual-machine:~/test/dir3$ ls
    dir1  file2.txt  log2  log2~
    hc@hc-virtual-machine:~/test/dir3$ cat log2
    I'm log1
    hc@hc-virtual-machine:~/test/dir3$ cat log2~
    2
    hc@hc-virtual-machine:~/test/dir3$ 
    

    说明:

    -b 不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。

    --backup该选项指定如果目标文件存在时的动作,共有四种备份策略:

    1.CONTROL=none或off : 不备份。

    2.CONTROL=numbered或t:数字编号的备份

    3.CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1...n:

    执行mv操作前已存在以数字编号的文件log2.txt.1,那么再次执行将产生log2.txt2,以次类推。如果之前没有以数字编号的文件,则使用下面讲到的简单备份。

    4.CONTROL=simple或never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。

  • 相关阅读:
    流处理 —— Spark Streaming中的Window操作
    Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.8 提供带注解的限定符元数据
    Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.7 为自动检测组件提供作用域
    Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.6 给自动检测组件命名
    Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.5 在组件中定义bean的元数据
    Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.4 使用过滤器自定义扫描
    Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.3 自动检测类和注册bean的定义
    Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.2 元注解
    Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.1 @Component和深层的构造型注解
    Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10 类路径扫描和被管理的组件
  • 原文地址:https://www.cnblogs.com/huchong/p/9875213.html
Copyright © 2011-2022 走看看