如何循环遍历深层堆叠文件夹列表并将所有文件移动到unix中的一个特定文件夹中?

如何循环遍历深层堆叠文件夹列表并将所有文件移动到unix中的一个特定文件夹中?

我下载了一堆图像文件,但它们按月和日递归排序,因此有一个文件夹和一个按月分类的文件,我试图循环遍历 find 命令找到的所有文件并将它们移动到我的主目录中的一个文件夹中。mv find ~/Downloads/skydrive* -name *.jpg-exec mv ~/temp {} \;

它不起作用,它说目录不存在,我也尝试了 for 循环,但得到了相同的结果。对此有什么解释吗?提前致谢。

答案1

你很接近了——你刚刚得到了论据动量顺序错误 – 尝试:

$ find ~/Downloads/skydrive* -name \*.jpg -exec mv {} ~/temp/ \;

答案2

尝试将您的名字放在单引号之间:find'~/Downloads/skydrive*'-name'*.jpg'-exec mv~/temp {} \;

答案3

如果你的 shell 是 bash 版本 4+(我相信在 OSX 上就是这种情况),也可以使用 globstar shell 选项和 for 循环来完成此操作:

shopt -s globstar
for f in ~/Downloads/skydrive/**/*.jpg; do mv "$f" ~/temp/; done

如果您有几十万个 jpg 文件,这将会中断,而find解决方案不会中断,但对于其他任何事情,它都应该完美运行。

相关内容