mv 是 Linux 中必须知道的命令之一。 mv 代表移动,本质上用于将文件或目录从一个位置移动到另一个位置。
语法类似于 Linux 中的 cp 命令,但是这两个命令之间有一个根本区别。
您可以将 cp 命令视为复制粘贴操作。 而 mv 命令可以等同于剪切粘贴操作。
这意味着当您对文件或目录使用 mv 命令时,文件或目录将移动到新位置,并且源文件/目录不再存在。 这就是剪切粘贴操作,不是吗?
cp 命令 = 复制和粘贴
mv 命令 = 剪切和粘贴
mv 命令也可用于重命名文件。 使用 mv 命令相当简单,如果您学习一些选项,它会变得更好。
mv 命令的 7 个实例
让我们看看 mv 命令的一些有用示例。
1.如何将文件移动到不同的目录
第一个也是最简单的 example 是移动一个文件。 为此,您只需指定源文件和目标目录或文件。
mv source_file target_directory
此命令将移动 source_file 并将其放在 target_directory 中。
2.如何移动多个文件
如果要一次移动多个文件,只需将所有文件提供给移动命令,然后是目标目录。
mv file1.txt file.2.txt file3.txt target_directory
您还可以使用 glob 移动与模式匹配的多个文件。
为了 example 在上面 example,而不是单独提供所有文件,您还可以使用匹配所有扩展名为 .txt 的文件的 glob 并将它们移动到目标目录。
mv *.txt target_directory
3.如何重命名文件
mv 命令的一项基本用途是重命名文件。 如果您使用 mv 命令并在目标中指定文件名,则源文件将重命名为 target_file。
mv source_file target_directory/target_file
在上述 example,如果 target_fille 在 target_directory 中不存在,它将创建 target_file。
但是,如果 target_file 已经存在,它会在不询问的情况下覆盖它。 这意味着现有目标文件的内容将随着源文件的内容而改变。
我将在本教程后面向您展示如何使用 mv 命令覆盖文件。
您没有义务提供目标目录。 如果不指定目标目录,文件将被重命名并保存在同一目录中。
记住: 默认情况下,如果目标文件已经存在,mv 命令会覆盖。 可以使用 -n 或 -i 选项更改此行为,稍后解释。
4. 如何在 Linux 中使用 mv 命令移动目录
您也可以使用 mv 命令移动目录。 该命令与我们在移动文件中看到的相同。
mv source_directory target_directory
在上述 example,如果 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
如果您不知道什么是写保护,请阅读 Linux 中的文件权限。
您可以通过以下方式进一步了解 mv 命令 浏览其手册页. 但是,您更有可能只使用我在此处展示的这些 mv 命令示例。 仅供参考,您也可以使用 rename 命令一次重命名多个文件。
我希望你喜欢这篇文章。 如果您有任何问题或建议,请随时在下面的评论部分提出。