我有一个如下的目录树
/
--/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
但无论如何该方法都应该有效。