我下载了一堆图像文件,但它们按月和日递归排序,因此有一个文件夹和一个按月分类的文件,我试图循环遍历 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
解决方案不会中断,但对于其他任何事情,它都应该完美运行。