2013-05-21 13 views

Antwort

5
find <path> -name "*.png" | xargs -Irepl TMXResolutionTool repl <ratio> 

Wenn Sie auf jede Datei alle diese Befehle ausführen, um bevor er zum nächsten bewegen, ein kleinen Bash-Skript kann

find <path> -name "*.png" | while read f ; do 
TMXResolutionTool $f <resize ratio> ; 
TMXResolutionTool $f <resize ratio> ; 
TMXResolutionTool $f <new width> <new height> ; done 
+0

Danke, fantastisch. – Eyeball

13

Ich denke, klarer eine for/do Schleife klarer ist und wahrscheinlich ein etwas schneller als find plus xargs. Vorausgesetzt, dass Sie die Standard-Shell verwenden, bash, auf OS X, die allgemeine Form des Befehls, wenn Sie es als Einzeiler tun möchte, ist:

for f in <files>; do <somecommand> $f; done 

wo <files> ein Ausdruck ist, der zu einer Liste auswertet der Dateien (normalerweise eine Platzhaltererweiterung), <somecommand> ist die Befehlszeile, die für jede Datei ausgeführt werden soll, und $f wird zu jeder Datei in <files> der Reihe nach erweitert. Also würden Sie so etwas wie dieses geben:

for f in myfolder/*; do TMXResolutionTool $f <otherparameters> ; done 

Sie können auch mehrere Befehle innerhalb der Schleife auf der gleichen Linie nur durch Verkettungs sie mit Semikolons laufen. Also, wenn Ihre Frage bedeutet, dass Sie TMXResolutionTool dreimal auf jede Datei nacheinander mit unterschiedlichen Parametern ausgeführt werden soll:

for f in myfolder/*; do TMXResolutionTool $f <otherparameters>; TMXResolutionTool $f <differentparameters>; TMXResolutionTool $f <yetmoredifferentstuff>; done 

By the way, ist dies alle grundlegenden bash Shell Tricks; Es ist nicht spezifisch für OS X. Jedes Buch auf bash wird Ihnen all dies und mehr erzählen (obwohl, wenn Sie etwas über die Befehlszeile aus Mac-Perspektive lernen möchten, empfehle ich das O'Reilly Buch Learning Unix for OS X Mountain Lion).