将所有* .mp4(例如)复制到某个地方

时间:2016-12-15 22:48:31

标签: bash

我试图在一个文件夹及其子文件夹中复制某种类型的所有文件! 我知道cp /source/path /path/to/destination_path。 我知道find . -name "*.mp4"

我试过了cp "$(find . -name "*.mp4")" /path/to/destination。虽然问题似乎是,但是这个结果会将结果放在一个字符串中。

你有解决方案吗?提前致谢。 :)

2 个答案:

答案 0 :(得分:1)

如果要保留文件夹结构,请考虑rsync

rsync -r --include='*.mp4' --exclude='*' . /path/to/destination

如果您不需要保留结构 -

在GNU系统上(具有非标准扩展名cp -t),您可以以尽可能少的cp个实例运行的方式执行此操作:

find . -name '*.mp4' -exec cp -t /path/to/destination -- '{}' +

否则,在POSIX兼容表单中,每个文件找到一个cp

find . -name '*.mp4' -exec cp -- '{}' /path/to/destination/ ';'

答案 1 :(得分:0)

输出结果为一个字符串,因为您在find结果上有引号。

要为每个find结果执行命令,请使用-exec代替(使用GNU bashfind):

find -name "*.mp4" -exec cp {} /path/to/destination/ \;