shell脚本用于列出当前和子文件夹中的所有图像并将它们复制到一个文件夹中?

时间:2012-11-19 04:03:55

标签: shell

我有一些文件夹层次结构,在一些文件夹中有图像,我需要一个shell脚本,它可以列出所有图像并将它们复制到一个指定的文件夹中,列出它们并不重要,我只想复制所有图像进入文件夹?

我知道我可以

ls -R *.png

但如何将它们全部复制到一个文件夹?

谢谢!

2 个答案:

答案 0 :(得分:6)

更新:正如格伦·杰克曼所指出的那样,使用我提供的答案会更有效率:

file . -type f -name \*.png | xargs cp -t destination

有关解释,请参阅此答案后面的glenn评论。


一种方法是使用find

find . -type f -name "*.png" -exec cp {} ~/path/to/your/destination/folder \;

<强>解释

  • find用于查找文件/目录
  • .从当前工作目录开始查找(或者,您可以指定路径)
  • -type f:只考虑文件(而不是目录)
  • -name "*.png":仅考虑具有png扩展名的
  • -exec:找到每个这样的结果,做一些事情(见下文)
  • cp {} ~/path/to/your/destination/folder \;:这是做某事的部分:将找到的每个结果(替换为{})复制到指定的目的地。

答案 1 :(得分:1)

要一次性复制多个文件模式,我们可以使用 -regex 代替 -name

find . -type f -regex '.*\(jpg\|jpeg\|png\|gif\|mp4\|avi\|svg\|mp3\|vob\)' -exec cp {} /path/to/your/destination/folder \;