Linux 中的 mv 命令和示例
mv代表移动。 mv 用于在 UNIX 等文件系统中将一个或多个文件或目录从一处移动到另一处。它有两个不同的功能:
(i)重命名文件或文件夹。
(ii)它将一组文件移动到不同的目录。
重命名期间不会消耗磁盘上的额外空间。此命令通常以静默方式运行,这意味着不提示确认。
句法:
mv [Option] source destination
让我们考虑 4 个名称为a.txt、b.txt等直到d.txt 的文件。
将文件a.txt重命名为geek.txt(不存在) :
$ ls
a.txt b.txt c.txt d.txt
$ mv a.txt geek.txt
$ ls
b.txt c.txt d.txt geek.txt
如果目标文件不存在,它将被创建。在上面的命令中, mv只是用目标文件名(新名称)替换目录中的源文件名。如果目标文件存在,那么它将被覆盖并删除源文件。默认情况下, mv不会提示覆盖现有文件,所以要小心!!
让我们试着用一个例子来理解,将geeks.txt移动到b.txt(exist) :
$ ls
b.txt c.txt d.txt geek.txt
$ cat geek.txt
India
$ cat b.txt
geeksforgeeks
$ mv geek.txt b.txt
$ ls
b.txt c.txt d.txt
$ cat b.txt
India
选项:
1. -i(交互式):与 cp 一样,-i 选项使命令在移动会覆盖现有文件的文件之前询问用户确认,您必须按y确认移动,任何其他键都会离开文件照原样。如果文件不存在,则此选项不起作用,它只是重命名它或将其移动到新位置。
$ ls
b.txt c.txt d.txt geek.txt
$ cat geek.txt
India
$ cat b.txt
geeksforgeeks
$ mv -i geek.txt b.txt
mv: overwrite 'b.txt'? y
$ ls
b.txt c.txt d.txt
$ cat b.txt
India
2. -f (Force):如果文件被写保护, mv提示确认覆盖目标文件。 -f选项会覆盖此次要保护并强制覆盖目标文件并删除源文件。
$ ls
b.txt c.txt d.txt geek.txt
$ cat b.txt
geeksforgeeks
$ ls -l b.txt
-r--r--r--+ 1 User User 13 Jan 9 13:37 b.txt
$ mv geek.txt b.txt
mv: replace 'b.txt', overriding mode 0444 (r--r--r--)? n
$ ls
b.txt c.txt d.txt geek.txt
$ mv -f geek.txt b.txt
$ ls
b.txt c.txt d.txt
$ cat b.txt
India
3. -n (no-clobber):使用-n选项, mv防止现有文件被覆盖。
在下面的示例中,效果是不会发生任何事情,因为文件将被覆盖。
$ ls
b.txt c.txt d.txt geek.txt
$ cat b.txt
geeksforgeeks
$ mv -n geek.txt b.txt
$ ls
b.txt c.txt d.txt geek.txt
$ cat b.txt
geeksforgeeks
4. -b(backup):使用此选项,可以更轻松地备份将被mv命令覆盖的现有文件。这将创建一个附加到它的波形字符(〜)的备份文件。
$ ls
b.txt c.txt d.txt geek.txt
$ mv -b geek.txt b.txt
$ ls
b.txt b.txt~ c.txt d.txt
5. –version:此选项用于显示当前在您的系统上运行的mv版本。
$ mv --version
mv (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Parker, David MacKenzie, and Jim Meyering.