2013-05-21 24 views
7

我使用所謂的TMX一個命令行工具中執行上的所有文件相同的命令(https://github.com/tonybeltramelli/TMXResolutionTool) 我想在某個文件夾每.png文件執行此命令。我怎樣才能做到這一點?OSX:一個文件夾

這是如何使用它:

TMXResolutionTool <tmx path> <resize ratio> 
TMXResolutionTool <image path> <resize ratio> 
TMXResolutionTool <image path> <new width> <new height> 

乾杯。

回答

5
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 
+0

謝謝,真棒。 – Eyeball

13

我覺得for/do循環更清晰,可能是稍快於findxargs。假設你使用的是默認的shell,bash,在OS X上,該命令的一般形式,如果你想這樣做,作爲一個班輪是:

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殼技巧;它不是特定於OS X的。任何關於bash的書都會告訴你所有這些和更多(儘管如果你想從Mac的角度瞭解命令行,我推薦O'Reilly書Learning Unix for OS X Mountain Lion)。

相關問題