Linux中的mv命令

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

mv是Linux中必须知道的命令之一。
mv代表移动,本质上用于将文件或者目录从一个位置移动到另一位置。

语法类似于Linux中的cp命令,但是这两个命令之间存在一个根本区别。

我们可以将cp命令视为复制粘贴操作。
而mv命令可以等同于剪切粘贴操作。

也就是说,当我们在文件或者目录上使用mv命令时,该文件或者目录将移至新位置,并且源文件/目录已不存在。
这就是剪切粘贴操作,不是吗?

cp命令=复制并粘贴
mv命令=剪切并粘贴

mv命令也可用于重命名文件。
使用mv命令非常简单,如果我们了解一些选择,它将变得更好。

mv命令的7个实际示例

让我们来看一些mv命令的有用示例。

1.如何将文件移动到其他目录

第一个也是最简单的示例是移动文件。
为此,我们只需要指定源文件和目标目录或者文件即可。

mv source_file target_directory

此命令将移动source_file并将其放置在target_directory中。

2.如何移动多个文件

如果要一次移动多个文件,只需将所有文件提供给move命令,然后再提供目标目录。

mv file1.txt file.2.txt file3.txt target_directory

我们还可以使用glob移动与模式匹配的多个文件。

例如,在上面的示例中,除了单独提供所有文件之外,我们还可以使用将所有文件扩展名为.txt的glob并将其移动到目标目录。

mv *.txt target_directory

3.如何重命名文件

mv命令的一项基本用途是重命名文件。
如果使用mv命令并在目标中指定文件名,则源文件将重命名为target_file。

mv source_file target_directory/target_file

在上面的示例中,如果target_fille在target_directory中不存在,它将创建target_file。

但是,如果target_file已经存在,它将在不询问的情况下将其覆盖。
这意味着现有目标文件的内容将与源文件的内容一起更改。

在本教程的后面,将介绍如何使用mv命令覆盖文件。

我们没有义务提供目标目录。
如果我们未指定目标目录,则文件将被重命名并保存在同一目录中。

注意:默认情况下,如果目标文件已存在,则mv命令会覆盖。
可以使用-n或者-i选项更改此行为,稍后将进行说明。

4.如何在Linux中使用mv命令移动目录

我们也可以使用mv命令移动目录。
该命令与在移动文件中看到的命令相同。

mv source_directory target_directory

在上面的示例中,如果target_directory存在,则整个source_directory将被移至target_directory内部。
这意味着source_directory将成为target_directory的子目录。

5.如何重命名目录

重命名目录与移动目录相同。
唯一的区别是目标目录必须不存在。
否则,整个目录将其中移动,就像在上一个目录中看到的那样。

mv source_directory path_to_non_existing_directory

6.移动时如何处理覆盖文件

如果要移动文件,并且已经有一个同名文件,则现有文件的内容将立即被覆盖。

这并非在所有情况下都是理想的。
我们有一些选择来处理覆盖方案。

为防止覆盖现有文件,可以使用-n选项。
这样,mv不会覆盖现有文件。

mv -n source_file target_directory

但是也许我们想覆盖一些文件。
我们可以使用交互式选项-i,它将询问我们是否要覆盖现有文件。

mv -i source_file target_directory
mv: overwrite 'target_directory/source_file'?

我们可以输入y覆盖现有文件,或者输入n而不覆盖现有文件。

还有一个用于进行自动备份的选项。
如果在mv命令中使用-b选项,它将覆盖现有文件,但是在此之前,它将创建覆盖文件的备份。

mv -b file.txt target_dir/file.txt
ls target_dir
file.txt file.txt~

默认情况下,文件的备份以~结尾。
我们可以使用-S选项并指定后缀来更改它:

mv -S .back -b file.txt target_dir/file.txt
ls target_dir
file.txt file.txt.back

处理覆盖时,也可以使用更新选项-u。
如果使用-u选项,则仅当源文件比现有文件新或者目标目录中不存在源文件时,才将源文件移动到新位置。

总结一下:

  • -i:覆盖之前确认
  • -n:不覆盖
  • -b:用备份覆盖
  • -u:如果目标文件旧或者不存在,则覆盖

7.如何强制移动文件

如果目标文件受写保护,则系统会要求我们先进行确认,然后再覆盖目标文件。

mv file1.txt target
mv: replace 'target/file1.txt', overriding mode 0444 (r--r--r--)? y

为避免出现此提示并立即覆盖文件,可以使用强制选项-f。

mv -f file1.txt target