在一个命令中复制多种类型的文件

在一个命令中复制多种类型的文件

我想将多个文件从一个目录复制到另一个目录,并具有不同的扩展名

所以我会写这样的东西:

cp -r dir1/*.gif dir2

但我还想在同一命令中复制所有 .jpg 文件。有某种 AND 命令可以工作吗?

答案1

您可以简单地将它们全部列出:

cp dir1/*.gif dir1/*.jpg dir2

其工作方式是 shell 扩展参数*并将所有匹配的名称传递给它,cp以便它实际上可以运行

cp dir1/file1.gif dir1/file2.gif dir1/file3.jpg dir1/file4.jpg dir2

答案2

cp /path/src/*.{gif,jpg} /path/dest 

关于信息通配符和通配符模式

尤其:

{ } (curly brackets)
terms are separated by commas and each term must be the name of something or a wildcard. This wildcard will copy anything that matches either wildcard(s), or exact name(s) (an “or” relationship, one or the other).

For example, this would be valid:

cp {*.doc,*.pdf} ~
This will copy anything ending with .doc or .pdf to the users home directory. Note that spaces are not allowed after the commas (or anywhere else).

答案3

For 循环非常适合这种事情。

示例:将所有 .py 和 .ipynb 文件从当前目录复制到名为 dst/ 的目录

for file in *.py *.ipynb; do cp $file /dst/; done

相关内容