在 Linux 系统中,mv(move)命令可用于对文件、目录的重命名以及移动操作。系统会根据参数的类型,自动判断是移动还是重名名操作。
mv [参数] [源文件或目录] [目标目录或目标文件]
-b或--backup 若需覆盖文件,则覆盖前先行备份。
-f或--force 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文 件或目录。
-i或--interactive 覆盖前先行询问用户。
-S<附加字尾>或--suffix=<附加字尾> 与-b参数一并使用,可指定备份文件的所要附加的字尾。
-u或--update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。
-v或--verbose 执行时显示详细的信息。
-V=<方法>或--version-control=<方法> 与-b参数一并使用,可指定备份的方法。
--help 显示帮助。
--version 显示版本信息。
(1)把当前目录下的 README.txt 文件移动到 /home/hxstrive/Desktop/bak 目录,并且重名为 README-BAK.txt 文件。要实现移动和重命名文件,需要以绝对路径指定目标文件,目标文件名的父目录为移动目的地,绝对路径中最后的文件名为新的文件名。为了防止覆盖目标目录下的同名文件,需要使用 -i 选项(覆盖前提示用户,避免误操作覆盖重要文件)。命令如下:
# 移动且重命名文件 hxstrive@course:~/Desktop$ mv -i README.txt /home/hxstrive/Desktop/bak/README-BAK.txt # 查看移动是否成功 hxstrive@course:~/Desktop$ ll /home/hxstrive/Desktop/bak/ total 12 drwxrwxr-x 2 hxstrive hxstrive 4096 6月 26 14:48 ./ drwxr-xr-x 3 hxstrive hxstrive 4096 6月 26 14:48 ../ -rw-rw-r-- 1 hxstrive hxstrive 12 6月 26 14:47 README-BAK.txt
注意:要把文件移动到目标目录下,必须对该目录具有写权限。
(2)移动整个目录到指定的目标目录。命令如下:
# 查看 nginx 目录下面有哪些文件和目录 hxstrive@course:~/tmp$ ls nginx-1.20.2 auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src # 将 nginx 目录移动到 bak 目录 hxstrive@course:~/tmp$ mv nginx-1.20.2 bak/ # 查看当前目录,nginx 目录已经不存在 hxstrive@course:~/tmp$ ls bak nginx-1.20.2.tar.gz # 查看 bak 目录,nginx 目录已经移动到 bak 目录 hxstrive@course:~/tmp$ ls bak/ nginx-1.20.2 # 查看 bak 目录中的 nginx 目录 hxstrive@course:~/tmp$ ls bak/nginx-1.20.2/ auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
(3)使用 mv 命令对文件进行重命名,命令如下:
# 将 nginx-1.20.2.tar.gz 文件重命名为 nginx.tar.gz hxstrive@course:~/tmp$ mv nginx-1.20.2.tar.gz nginx.tar.gz # 查看重命名后的效果 hxstrive@course:~/tmp$ ls bak nginx.tar.gz
(4)使用 mv 命令的 -b 和 -i 选项实现在移动文件时,如果目标存在该文件,则询问用户是否覆盖。在要覆盖文件时,给文件创建一个备份。命令如下:
# 查看目标目录,存在 nginx.tar.gz 文件 hxstrive@course:~/tmp$ ls bak/ nginx.tar.gz # 查看当前目录,也存在 nginx.tar.gz 文件 hxstrive@course:~/tmp$ ls bak nginx.tar.gz # 将当前目录下面的 nginx.tar.gz 移动到 bak 目录 hxstrive@course:~/tmp$ mv -bi nginx.tar.gz bak/ mv: overwrite 'bak/nginx.tar.gz'? y # 查看执行移动后 bak 目录的内容,多出了一个 nginx.tar.gz~ 文件,该文件就是备份文件 hxstrive@course:~/tmp$ ls bak/ nginx.tar.gz nginx.tar.gz~
(5)使用 mv 命令的 -S 选项指定覆盖文件时创建的备份文件的后缀(默认为 ~),命令如下:
# 确认 nginx.tar.gz 文件和 bak 目录 hxstrive@course:~/tmp$ ls bak nginx.tar.gz hxstrive@course:~/tmp$ ls bak/ nginx.tar.gz # 移动文件 nginx.tar.gz 到 bak 目录 hxstrive@course:~/tmp$ mv -ibS.bak nginx.tar.gz bak/ mv: overwrite 'bak/nginx.tar.gz'? y # 查看移动后 bak 目录的内容,多出了一个备份文件 nginx.tar.gz.bak hxstrive@course:~/tmp$ ls bak/ nginx.tar.gz nginx.tar.gz.bak
更多关于命令详细参考手册,请使用 man 命令或者 --help 参数获取帮助信息