Linux mv 命令

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux mv 命令。

1、命令简介

mv:用于移动文件或重命名文件的命令。移动(重命名)一个或多个文件和目录到给定位置(如果没有定义location,则重命名当前位置上的文件)。

2、命令语法

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

3、命令描述

mv 命令是"move"(移动)的缩写。此命令支持移动或重命名文件、一组文件或目录。它将源文件或目录重命名为目标文件或目录,或将源文件(文件)移动到目标目录。如果两个文件名位于同一目录中,这只是文件重命名;否则,文件内容将被复制到新位置,然后删除旧文件。默认情况下,mv 命令会在不发出警告的情况下覆盖文件。如果目标文件已经存在,它的数据将被覆盖。

要使用 mv 命令,用户必须在文件将要移动的目录上具有写权限。这是因为 mv 更改了移动涉及的两个目录(即源和目标)的内容。当在位于同一目录中的文件上使用 mv 命令时,文件的时间戳不会更新。

如果源和目标参数都是文件,则此命令将第一个文件复制到第二个文件,然后删除第一个文件。如果目标文件不存在,mv 命令会创建它并删除源文件。

如果源包含多个文件或目录作为参数,则目标参数应为目录。

如果源和目标参数都是目录,则它将第一个目录递归地复制到第二个目录,然后删除第一个目录。

4、命令选项

选项

描述

--backup[=CONTROL]

创建每个已存在的目标文件的备份

-b

类似于

--backup

但不接受参数

-f , --force

在覆盖之前不进行提示

-i , --interactive

覆盖之前进行提示

-n , --no-clobber

不覆盖已存在的文件

--strip-trailing-slashes

从每个源参数中删除任何尾随斜杠

-S , --suffix=SUFFIX

覆盖默认的备份后缀

-t , --target-directory=DIRECTORY

将所有源参数移动到目录DIRECTORY

-T , --no-target-directory

将DEST视为普通文件

-u , --update

仅在源文件较新或目标文件丢失时移动

-v , --verbose

解释正在执行的操作

-Z , --context

将目标文件的SELinux安全上下文设置为默认类型

--help

显示帮助信息并退出

--version

输出版本信息并退出

如果指定了多个选项 -i, -f,-n,只有最后一个选项会生效。

备份后缀默认为 '~',除非使用 --suffix 或 SIMPLE_BACKUP_SUFFIX 进行设置。版本控制方法可以通过 --backup 选项或通过 VERSION_CONTROL 环境变量来选择。以下是可能的取值:

描述

none, off

从不创建备份(即使使用 --backup)

numbered, t

创建带编号的备份

existing, nil

如果已存在带编号的备份,则使用带编号备份,否则使用简单备份

simple, never

总是创建简单备份

5、使用示例

1)重命名当前目录中的文件:

$ mv book_list.txt movie_list.txt

2)将文件移动到 'archive' 目录:

$ mv viewers_list.txt archive/

3)将文件移动到 'archive' 目录并重命名:

$ mv viewers_list.txt archive/users_list.txt

4)一次性移动多个文件:

$ mv current_news.txt headlines.txt cover_story.txt current_news/

5)使用通配符一次性移动多个文件:

$ mv *.txt news_portal/

6)移动一个目录及其内容:

$ mv current_news/ news_portal/

7)使用交互模式移动文件

$ mv -i viewers_list.txt archive/users_list.txt
mv: overwrite 'archive/users_list.txt'? y
$ mv --interactive viewers_list.txt archive/users_list.txt
mv: overwrite 'archive/users_list.txt'? y

8)无需提示即可移动文件:

$ mv -f viewers_list.txt archive/users_list.txt
$ mv --force viewers_list.txt archive/users_list.txt

9)仅在目标文件不存在时才移动:

$ mv -n headlines.txt current_news/
$ mv --no-clobber headlines.txt current_news/

10)如果目标文件已存在,则创建备份:

$ mv -b viewers_list.txt users_list.txt
$ mv --backup viewers_list.txt users_list.txt
$ mv --backup=numbered viewers_list.txt users_list.txt

11)创建具有特定后缀的备份:

$ mv -S .bak viewers_list.txt users_list.txt
$ mv --suffix=.bak viewers_list.txt users_list.txt

12)仅当源文件新于目标文件时才移动:

$ mv -u headlines.txt current_news/
$ mv --update headlines.txt current_news/

13)将文件移动到指定目录:

$ mv -t news_portal/ current_news/ archive/
$ mv --target-directory=news_portal current_news/ archive/

推荐阅读
cjavapy编程之路首页