将子目录中的所有* .mkv复制到父目录

粗略地说,我在linux服务器上有这样的文件夹设置:

  /show/sea​​son01/show01/shows01e01.mkv
 /show/sea​​son02/show01/shows02e01.mkv
 /show/sea​​son03/show01/shows03e01.mkv 

我想消除文件夹….我想复制*.mkv文件到/show/目录…

有人能帮我解决这个问题吗?

Alex的回答很好。 以下是一些替代方法:

  1. find+ xargs:

    find /show -name "*.mkv" -print0 | xargs -0 -Imkv cp mkv /show/

  2. find+并行:

    find /show -name "*.mkv" -print0 | parallel -0 -j+0 cp {} /show/

关于使用并行而不是find/exec的唯一有趣的事情是它可以并行执行多个命令。 因为有cpu核心, -j+0参数将使它一次启动尽可能多的作业。 如果这个操作是完全磁盘绑定的话,这可能不是特别有用,但是可能会加速复制大量的文件。

find /show -name "*.mkv" -exec cp {} /show/ \; 会做的伎俩