从未指定数量的子目录复制文件

从未指定数量的子目录复制文件

我有一个如下的目录树

/
--/Directory1
--/Directory2
-----/SubDir1
-----/SubDir2

其中每个都有一个我正在寻找的扩展名为 .mp4 的文件,我想将其移动到另一个文件夹。我试过:

cp -rv ./*/*.mp4 ~/foo

但是,这只能从 Directory1 和 Directory2 获取文件,并且如果我仅搜索 *.mp4,则我只能搜索根目录。

我想让你知道,我实际上并没有在我的根目录中执行此操作,这只是一个例子,请不要发表居高临下的评论,除非我真的错过了一些非常基本的东西。

答案1

如果您正在使用支持递归通配符的 shell,则可以启用该 ex。

shopt -s globstar        # bash

然后使用

cp -v ./**/*.mp4 ~/foo

-r在这里不合适,*.mp4假设常规文件)。或者,使用find递归下降:

find . -type f -name '*.mp4' -exec cp -vt ~/foo {} +

globstar如果匹配的数量足够大,该方法将会失败;find但无论如何该方法都应该有效。

相关内容