瘦子 2019-01-22
前几天,我想知道如何将多个文件类型从一个目录移动(不复制)到另一个目录。我已经知道如何查找并将某些类型的文件从一个目录复制到另一个目录。但是,我不知道如何同时移动多种文件类型。如果你曾遇到这样的情况,我知道在类 Unix 系统中从命令行执行该操作的一个简单方法。
想象一下这种场景,你在名为 dir1
的目录中有多种类型的文件,例如 .pdf、 .doc、 .mp3、 .mp4、 .txt 等等。我们来看看 dir1
的内容:
$ ls dir1 file.txt image.jpg mydoc.doc personal.pdf song.mp3 video.mp4
你希望将某些文件类型(不是所有文件类型)移动到另一个位置。例如,假设你想将 .doc、 .pdf 和 .txt 文件一次性移动到名为 dir2
的另一个目录中。
要同时将 .doc、 .pdf 和 .txt 文件从 dir1
移动到 dir2
,命令是:
$ mv dir1/*.{doc,pdf,txt} dir2/
很容易,不是吗?
现在让我们来查看一下 dir2
的内容:
$ ls dir2/ file.txt mydoc.doc personal.pdf
看到了吗?只有 .doc、 .pdf 和 .txt 从 dir1
移到了 dir2
。
在上面的命令中,你可以在花括号内添加任意数量的文件类型,以将它们移动到不同的目录中。它在 Bash 上非常适合我。
另一种移动多种文件类型的方法是转到源目录,在我们的例子中即为 dir1
:
$ cd ~/dir1
将你选择的文件类型移动到目的地(即 dir2
),如下所示:
$ mv *.doc *.txt *.pdf /home/sk/dir2/
要移动具有特定扩展名的所有文件,例如 .doc,运行:
$ mv dir1/*.doc dir2/
更多细节,参考 man 页:
$ man mv
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。 -L 直接显示符号连接所指向的文件的类别。 -m<魔法数字文件> 指定魔法数字文件。 -v 显示版本信息。 -z 尝试去解读压缩文件的内容。