我想在我的Mac中使用Automator和shell来整理我的文件。我尝试写一些这样的命令:
mv -f /Users/myname/Downloads/*.zip /Users/myname/Downloads/zip/
mv -f /Users/myname/Downloads/*.txt /Users/myname/Downloads/txt/
他们工作了。但我发现' mv'如果没有文件匹配将返回错误,所以我想做这样的事情。
if (txt file) , mv *.txt /txt/
if (zip file) , mv *.txt /zip/
我发现if语句正在使用
[ -f " "]
然后我写了这样的东西
[ -f "/Users/myname/Downloads/*.zip" ] && mv -f /Users/myname/Downloads/*.zip /Users/myname/Downloads/zip/ || echo 'Nothing'
但它返回"没有"甚至文件都存在。
如何解决此问题?或者我不应该使用shell命令来执行此操作? 有什么建议吗?
答案 0 :(得分:1)
如何使用find
代替?像这样:
如果您可以使用mv -t
find /Users/myname/Downloads/ -maxdepth 1 -name "*.zip" -print0 | xargs -0 mv -f -t /Users/myname/Downloads/zip/
如果您运气不好(或使用-exec
,如多条评论所述):
find /Users/myname/Downloads/ -maxdepth 1 -name "*.zip" -print0 | xargs -I {} -0 mv -f {} /Users/myname/Downloads/zip/
编辑添加-print0
以使解决方案空白区域安全。
EDIT2 使用mv -t
代替{}