zoukankan      html  css  js  c++  java
  • 简明Linux命令行笔记:mv

    重命名、覆盖或移动文件

    mv [options] existing-file new-filename

    mv [options] existing-file-list directory

    mv [options] existing-directory new-directory

    参数

    第一种形式:existing-file 是需要重命名的文件路径; new-filename 是文件的新路径名,用于重命名或覆盖

    第二种形式:existing-file 是需要移动的文件路径列表; directory 是文件需要移动到的新目录,用于移动

    第三种形式:existing-file 是需要重命名的目录路径; new-directory 是目录的新路径名,用于重命名或覆盖

    选项

    -b                如果已存在相同文件名,则覆盖前进行备份

    -f                 如果已存在相同文件名,而用户不具有写的权限,则强制覆盖

    -i                 如果已存在相同文件名,覆盖前提示用户进行确认

    -u                比较原文件与目标文件修改时间,如果目标文件较新则不覆盖

    -v                列出所有被移动或重命名的文件

    示例

    mv

    $ mv demo1.txt demo2.txt
    $ ls
    demo2.txt

    重命名文件

    mv -i

    $ ls
    demo2.txt  demo.txt
    $ mv demo2.txt -i demo.txt 
    mv:是否覆盖"demo.txt"? y

    对已存在的文件覆盖前进行确认,y或Y开头的字符串表示确定,其余任意字符表示否定

    mv 不具备写权限的文件名

    复制代码
    $ ls -l
    总用量 0
    -rw-r--r-- 1 root root 0  1月  8 13:31 cc
    -rw-r--r-- 1 siu  siu  0  1月  8 13:24 dd
    $ mv dd cc
    mv:是否覆盖"cc",而不理会权限模式0644 (rw-r--r--)? y
    $ ls
    cc
    复制代码

    此处cc的所有人和组都是root,而我当前用户是siu,覆盖时会要求确认

    mv -f 不具备写权限的文件名

    复制代码
    $ ls -l
    总用量 0
    -rw-r--r-- 1 root root 0  1月  8 13:34 aa
    -rw-r--r-- 1 siu  siu  0  1月  8 13:34 bb
    $ mv bb -f aa
    $ ls
    aa
    复制代码

    与上面一样,只不过此处加了 -f 选项,覆盖时强制执行而不提示

    mv 移动目录

    复制代码
    $ ls
    abc  cde
    $ mv cde abc
    $ ls
    abc
    $ cd abc/
    $ ls
    cde
    复制代码

    此处将cde目录移动到abc目录中

    mv 重命名目录

    $ ls
    abc
    $ mv abc dir
    $ ls
    dir

    此处将abc目录重命名为dir目录,mv abc ../可将abc移动到父目录,此处灵活多变

    mv -u

    复制代码
    $ ls -l
    总用量 0
    -rw-r--r-- 1 siu siu 0  1月  8 13:43 time1.txt
    -rw-r--r-- 1 siu siu 0  1月  8 13:44 time2.txt
    $ mv time1.txt -u time2.txt 
    $ ls
    time1.txt  time2.txt
    复制代码

    确认修改时间再判断是否覆盖,此处time2.txt的修改时间比time1.txt的修改时间新,所以覆盖失败

    mv -v

    $ mv time1.txt -v time2.txt 
    "time1.txt" -> "time2.txt"
    $ ls
    time2.txt

    列出移动或覆盖时的信息

    mv -b

    $ mv -b aa.txt bb.txt
    $ ls
    bb.txt  bb.txt~

    覆盖时进行备份,所备份的文件尾部有个~

    Tips

    1.在Linux中,覆盖和重命名的概念几乎是一样的,没有Windows中所谓的rename这一说法

    2.选项你可以写在任意位置,可以mv aa -v bb,也可以 mv -v aa bb,还可以 mv aa bb -v

  • 相关阅读:
    bzoj4821
    bzoj2434
    第二阶段团队项目冲刺站立会议(五)
    第二阶段团队项目冲刺站立会议(四)
    第二阶段团队项目冲刺站立会议(三)
    小水王
    第二阶段团队项目冲刺站立会议(二)
    梦断代码阅读笔记02
    第二阶段团队项目冲刺站立会议(一)
    梦断代码阅读笔记01
  • 原文地址:https://www.cnblogs.com/zhangkaimin/p/5138459.html
Copyright © 2011-2022 走看看