如何在Linux中移动文件和目录(mv命令)

时间:2020-03-05 15:27:27  来源:igfitidea点击:

移动文件和目录是我们在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'