我想将多个文件从一个目录复制到另一个目录,并具有不同的扩展名
所以我会写这样的东西:
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