我正在使用名为TMX的命令行工具(https://github.com/tonybeltramelli/TMXResolutionTool) 我想在某个文件夹中的每个.png文件上执行此命令。我怎么能这样做?
这是如何使用的:
TMXResolutionTool <tmx path> <resize ratio>
TMXResolutionTool <image path> <resize ratio>
TMXResolutionTool <image path> <new width> <new height>
干杯。
答案 0 :(得分:15)
我认为for/do
循环更清晰,可能比find
加xargs
快一点。假设您在OS X上使用默认shell bash
,如果您希望将其作为单行使用,则命令的一般形式为:
for f in <files>; do <somecommand> $f; done
其中<files>
是一个计算结果为文件列表的表达式(通常是通配符扩展),<somecommand>
是您要为每个文件执行的命令行,$f
扩展转而<files>
中的每个文件。所以你输入这样的东西:
for f in myfolder/*; do TMXResolutionTool $f <otherparameters> ; done
您也可以在同一行的循环内运行多个命令,只需用分号链接它们即可。因此,如果您的问题意味着您希望按顺序使用不同的参数对每个文件运行TMXResolutionTool三次:
for f in myfolder/*; do TMXResolutionTool $f <otherparameters>; TMXResolutionTool $f <differentparameters>; TMXResolutionTool $f <yetmoredifferentstuff>; done
顺便说一句,这是所有基本的bash
shell技巧;它不是特定于OS X. bash
上的任何书都会告诉你所有这些以及更多内容(尽管如果你想从Mac角度了解命令行,我推荐O'Reilly书籍Learning Unix for OS X Mountain Lion )。
答案 1 :(得分:6)
find <path> -name "*.png" | xargs -Irepl TMXResolutionTool repl <ratio>
如果你需要在移动到下一个文件之前按顺序运行所有这些命令,那么一个小的bash脚本可能会更清晰
find <path> -name "*.png" | while read f ; do
TMXResolutionTool $f <resize ratio> ;
TMXResolutionTool $f <resize ratio> ;
TMXResolutionTool $f <new width> <new height> ; done