Linux中的文件与目录操作利器mv命令使用解析

   mv 命令是一个与cp类似的命令,但是它并非创建文件或目录的复制品/副本。不管你在使用什么版本的Linux系统,mv 都默认安装在你的Linux系统上了。

  用法:mv [选项]... [-T] 源文件 目标文件

  或:mv [选项]... 源文件... 目录

  或:mv [选项]... -t 目录 源文件...

  将源文件重命名为目标文件,或将源文件移动至指定目录。

  长选项必须使用的参数对于短选项时也是必需使用的。

  --backup[=CONTROL] 为每个已存在的目标文件创建备份

  -b 类似--backup 但不接受参数

  -f, --force 覆盖前不询问

  -i, --interactive 覆盖前询问

  -n, --no-clobber 不覆盖已存在文件

  如果您指定了-i、-f、-n 中的多个,仅最后一个生效。

  --strip-trailing-slashes 去掉每个源文件参数尾部的斜线

  -S, --suffix=SUFFIX 替换常用的备份文件后缀

  -t, --target-directory=DIRECTORY 将所有参数指定的源文件或目录

  移动至 指定目录

  -T, --no-target-directory 将目标文件视作普通文件处理

  -u, --update 只在源文件文件比目标文件新,或目标文件

  不存在时才进行移动

  -v, --verbose 详细显示进行的步骤

  --help 显示此帮助信息并退出

  --version 显示版本信息并退出

  备份文件的后缀为"~",除非以--suffix 选项或是SIMPLE_BACKUP_SUFFIX

  环境变量指定。版本控制的方式可通过--backup 选项或VERSION_CONTROL 环境

  变量来选择。以下是可用的变量值:

  none, off 不进行备份(即使使用了--backup 选项)

  numbered, t 备份文件加上数字进行排序

  existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份

  simple, never 永远使用普通方式备份

  使用示例

  1.移动文件

  移动文件时需要注意的是文件的源地址和目标地址必须不同。这里有个例子,想要将file_1.txt文件从当前目录移动到其它目录,以/home/pungki/为例,语法应该如下:

  代码如下:

  $ mv file_1.txt /home/pungki/office


  如我们所见,当我们移动 filetxt 文件时,先前目录的 file1.txt 就被删除了。

  2.移动多个文件

  如果想一次移动多个文件,我们可以将他们放在一行并用空格分开。

  复制代码

  代码如下:

  $ mv file_2.txt file_3.txt file_4.txt /home/pungki/office


  如果你的文件有规律可循的话那么你就可以使用通配符。比如,为了移除所有以.txt为扩展名的文件,我们可以用下面的命令:

  代码如下:

  $ mv *.txt /home/pungki/office


  3.移动目录

  不同于复制命令,用 mv 命令移动目录相当直接。移动目录你可以使用不带选项的 mv 命令。看下面的截图就一目了然了。


  4.重命名文件或目录

  我们也用 mv 命令来重命名文件或目录。不过目标位置和源位置必须相同才可以。然后文件名必须不同。

  假定我们当前所在目录为/home/pungki/Documents,而我们想将file1.txt重命名为file2.txt。那么命令应该如下:

  代码如下:

  $ mv file_1.txt file_2.txt

  如果是绝对路径,它应该像下面这样:

  代码如下:

  $ mv /home/pungki/Documents/file_1.txt /home/pungki/Documents/file_2.txt


  5. 重命名目录

  上一段的规则同样适用于目录。请看这个例子:

  复制代码

  代码如下:

  $ mv directory_1/ directory_2/


  6. 打印移动信息

  当你移动或重命名一大堆文件或目录时,你可能会想在不去目标位置去查看的情况下知道你自己的命令是否成功地执行了。这就要用到-v选项了。

  代码如下:

  $ mv -v *.txt /home/pungki/office


  该方法同样适用于目录。


  7. 使用交互模式

  当你将文件移动到其它位置,而那个位置恰好有同样的文件,这时 mv 命令会覆盖掉原来的文件。对于mv的这一行为一般不会有什么提示。如果想产生一个关于覆盖文件的提示,我们可以使用-i选项。(译注:通常发行版会通过alias命令,将-i作为默认选项,所以会有提示。)

  假设我们想将 file1.txt 移动到 /home/pungki/office。同时,/home/pungki/office 目录下已经有file1.txt文件了。

  代码如下:

  $ mv -i file_1.txt /home/pungki/office


  这个提示会让我们知道目标位置处file_1.txt的存在。如果我们按y键,那么那个文件将会被删除,否则不会。

  8. 使用更新选项

  -i 选项会提示我们关于覆盖文件的提示,而 -u 则只在源文件比目标文件新时才执行更新。让我们看一看下面的例子:


  假如 file1.txt 和 file2.txt有如下特点:

  复制代码

  代码如下:

  File_1.txt has 84 bytes file size and it last modified time is 12:00

  File_2.txt has 0 bytes file size and it last modified time is 11:59

  我们想将它们移动到 /home/pungki/office 目录下。**但是目标地址*已经有file1.txt和file2.txt了。

  我们用下面的命令将file1.txt 和file2.txt从当前目录移动到/home/pungki/office

  复制代码

  代码如下:

  $ mv -uv *.txt /home/pungki/office

  可以看到这些文件被移动了。能移动这些文件是因为它们最近的修改时间戳比 /home/pungki/office 目录中的文件新。

  9.不要覆盖任何已存在的文件

  如果-i选项询问我们是否要覆盖文件,那么 -n 选项将不会允许我们覆盖任何已存在的文件。

  继续使用第8点中的例子,如果我们将-u 换成 -n同时加上-v选项,那么我们会看到没有任何文件移动到了 /home/pungki/office 目录下。

  复制代码

  代码如下:

  $ mv -vn *.txt /home/pungki/office


  10. 复制时创建备份

  默认情况下,移动文件将会覆盖已存在的目标文件。但是如果我们移动错了文件而目标文件已经被新的文件覆盖了,这时应该怎么办才好呢?有没有一种方法可以恢复之前的文件呢?答案是肯定的。我们可以用-b选项。该选项会在新文件覆盖旧文件时将旧文件做备份。这里我们还以第8点为例。

  代码如下:

  $ mv -bv *.txt /home/pungki/office


  如截图中所见,在 /home/pungki/office 目录下出现了名为file1.txt~ and file2.txt~ 的文件。那个波浪符号(~)意味着这些文件是备份文件。从它们的属性中我们可以看到,这些文件比file1.txt和file2.txt要旧。

  11. 无条件覆盖已经存在的文件

  当你希望无论如何都覆盖已经存在的文件或目录时,你可以使用 -f 选项。如果同时指定了 -f 选项和 -i 或 -n 选项,则 -f 选项会覆盖它们——即不进行任何提示而覆盖,所以,在使用此参数时,知道你在做什么。

  代码如下:

  $ mv -f *.txt /home/pungki/office

时间: 2024-10-29 06:20:16

Linux中的文件与目录操作利器mv命令使用解析的相关文章

Linux中cp文件或目录时如何显示进度?

Linux中cp文件或目录时如何显示进度? 用法:cp [选项]... [-T] 源文件 目标文件 或:cp [选项]... 源文件... 目录 或:cp [选项]... -t 目录 源文件...将源文件复制至目标文件,或将多个源文件复制至目标目录. 长选项必须使用的参数对于短选项时也是必需使用的.&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; -a, --archive                 等于-d

PHP中文件读、写、删的操作(PHP中对文件和目录操作)_php实例

一:目录操作 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: 复制代码 代码如下: <?php $base_dir = "filelist/"; $fso = opendir($base_dir); echo $base_dir."<hr/>" ; while($flist=readdir($fso)){ echo $flist."<br/&

linux中.* 匹配文件与目录注意事项

而问题的根本原因在于,使用.*在Linux下匹配文件和目录时,上级目录作为..会被匹配到. 而即使是这样,那也不会导致问题吧?但事实上并非如此,因为.*并不只会匹配当前的上级目录..,经过测试它还会依次匹配到上级的上级目录../... 正所谓无图无真相,下面是我的相关操作步骤,可以清楚的看到使用.*之后,直接修改了上级..与上级的上级../..目录属性. 因此,正确的做法,应该使用正则表达式 .[^.]* 来精确匹配当前目录下的隐藏文件. 最后,我想试一下rm和mv会造成什么样严重的后果,却发现

Python中的文件和目录操作实现代码_python

本文将详细解释这些函数的使用方法.首先,我们介绍Python语言中类似于Windows系统的dir命令的列出文件功能,然后描述如何测试一个文件名对应的是一个标准文件.目录还是链接,以及提取文件大小和日期的方法.之后,我们还将介绍如何删除文件和目录,如何复制和删除文件,以及怎样将一个完整的文件路径分解成目录部分和文件名部分,最后,我们讲解目录的创建,以及如何在目录树中移动目录并处理文件. 一.显示目录内容 当我们想要列出当前目录中所有扩展名为.jpg或.gif的文件的时候,就可以使用glob模块来

详解Linux中输出文件内容的rev与tac命令使用

  rev rev 显示最后一个字符显示到第一个字符. 例: 代码如下: [root@localhost www]# cat test 1234 abcd [root@localhost www]# rev test 4321 dcba [root@localhost www]# tac test abcd 1234 tac 用法:tac [选项]... [文件]... 将每个指定文件按行倒置并写到标准输出. 如果不指定文件,或文件为"-",则从标准输入读取数据. 长选项必须使用的参数

linux中在文件夹下新建文档属于写操作(w)还是执行(x)操作

问题描述 linux中在文件夹下新建文档属于写操作(w)还是执行(x)操作 众所周知,linux下文档和文件夹都有rwx操作,读鸟哥的私房菜中说不能在没有x权限的文件夹下执行一些命令,比如man,ll等,那在文件夹中新建文档是属于写操作还是执行操作? 解决方案 这要看你是怎样新建的这个文件,比如用 touch 来创建的文件,正常情况下就不会有x权限. 但如果你有执行gcc的权限,那么你用gcc编译一个自己写的c文件得到一个可执行执行程序时通常就有x权限了. 还有一些脚本文件,一般新建时用vi或e

Linux中RPM文件操作的常用命令总结_Linux

简介 众所周知在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的"添加/删除程序",但是功能又比"添加/删除程序"强很多,它就是Red Hat Package Manager(简称RPM).本文介绍的就是关于Linux中RPM文件操作的常用命令,下面话不多说,来一起看看吧. 一.RPM 安装操作 命令: rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rpm 包: rpm -iv e

LINUX学习(一)文件与目录操作

        用户的数据和程序大多以文件的形式保存.用户使用Linux系统的过程中,需要经常对文件和目录进行操作.本章讲述了文件与目录的基本概念,有关文件和目录操作的命令以及如何在Linux环境下运行DOS命令. 文件与目录的基本概念 文件与文件名 在多数操作系统中都有文件的概念.文件是Linux用来存储信息的基本结构,它是被命名(称为文件名)的存储在某种介质(如磁盘.光盘和磁带等)上的一组信息的集合.Linux文件均为无结构的字符流形式.文件名是文件的标识,它由字母.数字.下划线和圆点组成的

如何在 Linux 中复制文件到多个目录中

在学习 Linux 的过程中,对于新手而言总是会使用几个命令来完成一个简单的任务.对正在熟悉使用终端的人这是很容易理解的行为.然而,如果你想要成为一个老手,学习我说的"快捷命令"会显著减少时间浪费. 在本篇中,我们会用一个简单的方法在 Linux 中用一个命令来将目录复制到多个文件夹中. 在 Linux 中,cp 命令常被用于从一个文件夹中复制文件到另一个文件夹中,最简单的语法如下: # cp [options-.] source(s) destination 另外,你也可以使用高级复