操作系统

Linux:mv 命令的10个实用例子

当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选。本文中总结了十个Linux mv 命令的实例,希望能给大家带来一些帮助。 熟悉了复制命令,下一个相关的命令就是 mv 命令。当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选。 初识 mv 命令 mv 命令是一个与cp类似的命令,但是它并非创建文件或目录的复制品/副本。不管你在使用什么版本的Linux系统,mv 都默认安装在你的Linux系统上了。来看一下 mv 命令在日常操作中的一些例子。 1.移动文件 移动文件时需要注意的是文件的源地址和目标地址必须不同。这里有个例子,想要将file_1.txt文件从当前目录移动到其它目录,以/home/pungki/为例,语法应该如下: 如我们所见,当我们移动 filetxt 文件时,先前目录的 file1.txt 就被删除了。 2.移动多个文件 如果想一次移动多个文件,我们可以将他们放在一行并用空格分开。 如果你的文件有规律可循的话那么你就可以使用通配符。比如,为了移除所有以.txt为扩展名的文件,我们可以用下面的命令: 3.移动目录 不同于复制命令,用 mv 命令移动目录相当直接。移动目录你可以使用不带选项的 mv 命令。看下面的截图就一目了然了。 4.重命名文件或目录 我们也用 mv 命令来重命名文件或目录。不过目标位置和源位置必须相同才可以。然后文件名必须不同。 假定我们当前所在目录为/home/pungki/Documents,而我们想将file1.txt重命名为file2.txt。那么命令应该如下: 如果是绝对路径,它应该像下面这样: 5. 重命名目录 上一段的规则同样适用于目录。请看这个例子: 6. 打印移动信息 当你移动或重命名一大堆文件或目录时,你可能会想在不去目标位置去查看的情况下知道你自己的命令是否成功地执行了。这就要用到-v选项了。 该方法同样适用于目录。 7. 使用交互模式 当你将文件移动到其它位置,而那个位置恰好有同样的文件,这时 mv 命令会覆盖掉原来的文件。对于mv的这一行为一般不会有什么提示。如果想产生一个关于覆盖文件的提示,我们可以使用-i选项。(译注:通常发行版会通过alias命令,将-i作为默认选项,所以会有提示。) 假设我们想将 file1.txt 移动到 /home/pungki/office。同时,/home/pungki/office 目录下已经有file1.txt文件了。 这个提示会让我们知道目标位置处file_1.txt的存在。如果我们按y键,那么那个文件将会被删除,否则不会。 8. 使用更新选项 -i 选项会提示我们关于覆盖文件的提示,而 -u 则只在源文件比目标文件新时才执行更新。让我们看一看下面的例子: 假如 file1.txt 和 file2.txt有如下特点: 我们想将它们移动到 /home/pungki/office 目录下。**但是目标地址*已经有file1.txt和file2.txt了。 我们用下面的命令将file1.txt 和file2.txt从当前目录移动到/home/pungki/office 可以看到这些文件被移动了。能移动这些文件是因为它们最近的修改时间戳比 /home/pungki/office 目录中的文件新。 9.不要覆盖任何已存在的文件 如果-i选项询问我们是否要覆盖文件,那么 -n 选项将不会允许我们覆盖任何已存在的文件。 继续使用第8点中的例子,如果我们将-u 换成 -n同时加上-v选项,那么我们会看到没有任何文件移动到了 /home/pungki/office 目录下。 10. 复制时创建备份 默认情况下,移动文件将会覆盖已存在的目标文件。但是如果我们移动错了文件而目标文件已经被新的文件覆盖了,这时应该怎么办才好呢?有没有一种方法可以恢复之前的文件呢?答案是肯定的。我们可以用-b选项。该选项会在新文件覆盖旧文件时将旧文件做备份。这里我们还以第8点为例。 如截图中所见,在 /home/pungki/office 目录下出现了名为file1.txt~ and file2.txt~ 的文件。那个波浪符号(~)意味着这些文件是备份文件。从它们的属性中我们可以看到,这些文件比file1.txt和file2.txt要旧。 11. 无条件覆盖已经存在的文件 (译注:这一节是译者补充的,原文遗漏了这个重要选项) 当你希望无论如何都覆盖已经存在的文件或目录时,你可以使用 -f 选项。如果同时指定了 -f 选项和...
阅读全文
[持续更新]批处理重命名系列案例 脚本编程

[持续更新]批处理重命名系列案例

批处理用于文本/文件的操作确实非常简单有力!不用多么复杂的代码,仅一个记事本加上简洁的代码即可搞定大部分文本/文件的操作,下面记录下我用过的一些代码,基本都是我在百度回答知友的一些代码,既给涧客们参考,也让起到备忘的作用。。。。(本文是系列博文,将持续更新,敬请关注!) 案例一、 百度原址 知友问: 想把一个文件夹里的全部文件都命名成001,002……这样按顺序,什么顺序无所谓,只要名字都变了就行,谁帮忙写个 我给出的代码: 简单解释: 1.使用for /r 遍历当前目录(%~dp0)下所有文件,效率比for /f + dir /s /b 高; 2.if not语句用于排除bat文件本身,全路径是%0,拓展到bat文件名:%~nx0; 3.利用变量1000开始累加,每次利用!var:~-3!取得后三位,即依次为001、002、003... Ps:var=1000,那么此脚本最多重命名999个文件,再多将出现覆盖错误,如何修改?请涧客思考,最好能在评论中留下您的代码,呵呵!(比较简单,大虾请勿拍砖!) 案例二、 百度原址 知友问:   “比如,我有一个文件夹里的文件都是X1,、X2…X51,我有个的文件名字是X15.ass,用完以后变成 Soul Eater 14 .ass代码如下: 如何才能让顺序变正确,顺便说一下,最后一个51变成了1. 我给出的代码: 简单解释:因为a的值,被初始化为0,所以第一个文件就是0,第二个是1,那么第15个就是14了。。。代码调换了下顺序,先给a+1,让重命名时a的值为1即可。 Ps:此处使用for+dir 的方式,效率虽然会低一点,但是出错率也降低了,容易懂!当然一样可以用for /r。
阅读全文