如何在Linux中移动文件和目录(mv命令)
移动文件和目录是我们在Linux系统上经常需要执行的最基本的任务之一。
在本教程中,我们将说明如何使用“ mv”命令移动文件和目录。
如何使用“ mv”命令
“ mv”命令(短时移动)用于将文件和目录从一个位置重命名并移动到另一个位置。
“ mv”命令的语法如下:
mv [OPTIONS] SOURCE DESTINATION
“源”可以是一个或者多个文件或者目录,“目的地”可以是单个文件或者目录。
- 当多个文件或者目录作为“源”给出时,“目的地”必须是一个目录。在这种情况下,“源”文件将移至目标目录。
- 如果将单个文件指定为'SOURCE',并且'DESTINATION'目标是现有目录,则该文件将移动到指定目录。
- 如果我们将单个文件指定为“ SOURCE”,将单个文件指定为“ DESTINATION”目标,则我们将重命名该文件。
- 如果“ SOURCE”是目录,而“ DESTINATION”不存在,则“ SOURCE”将重命名为“ DESTINATION”。否则,如果存在“ DESTINATION”,则将其移到“ DESTINATION”目录中。
要移动文件或者目录,我们需要同时具有'SOURCE'和'DESTINATION'的写许可权。
否则,我们将收到一个权限被拒绝的错误。
例如,要将文件“ file1”从当前工作目录移动到“/tmp”目录,可以运行:
mv file1 /tmp
要重命名文件,我们需要指定目标文件名:
mv file1 file2
移动目录的语法与移动文件时的语法相同。
在以下示例中,如果存在'dir2'目录,则该命令会将'dir1'移动到'dir2'内。
如果“ dir2”不存在,则“ dir1”将重命名为“ dir2”:
mv dir1 dir2
移动多个文件和目录
要移动多个文件和目录,请指定要移动的文件作为源。
例如,要将文件“ file1”和“ file2”移动到“ dir1”目录,请输入:
mv file1 file2 dir1
'mv'命令还允许我们使用模式匹配。
例如,要将所有“ pdf”文件从当前目录移动到“~/Documents”目录,可以使用:
mv *.pdf ~/Documents
'mv'命令选项
'mv'命令接受几个影响默认命令行为的选项。
在某些Linux发行版中,“ mv”可能是“ mv”命令的别名,带有一组自定义选项。
例如,在CentOS中,'mv'是'mv -i'的别名。
我们可以使用“ type”命令查找“ mv”是否为别名:
type mv
如果'mv'是别名,则输出将如下所示:
mv is aliased to `mv -i'
如果给出了冲突的选项,则最后一个优先。
覆盖前提示
默认情况下,如果目标文件存在,它将被覆盖。
要提示确认,请使用“ -i”选项:
mv -i file1 /tmp
mv: overwrite '/tmp/file1'?
要覆盖文件,请输入'y'或者'Y'。
强制覆盖
如果尝试覆盖只读文件,则“ mv”命令将提示我们是否要覆盖文件:
mv -i file1 /tmp
mv: replace '/tmp/file1', overriding mode 0400 (r--------)?
为了避免出现提示,请使用'-f'选项:
mv -f file1 /tmp
当我们需要覆盖多个只读文件时,此选项特别有用。
不要覆盖现有文件
'-n'选项告诉'mv'从不覆盖任何现有文件:
mv -f file1 /tmp
如果存在“ file1”,则上面的命令将不执行任何操作。
否则它将把文件移到“/tmp”目录。
备份档案
如果目标文件存在,则可以使用“ -b”选项创建该文件的备份:
mv -b file1 /tmp
备份文件将与原始文件具有相同的名称,并在其后添加波浪号('~')。
使用ls命令来验证是否已创建备份:
ls /tmp/file1*
/tmp/file1 /tmp/file1~
详细输出
另一个有用的选项是'-v'。
使用此选项时,命令将显示每个移动文件的名称:
mv -i file1 /tmp
renamed 'file1' -> '/tmp/file1'