2013-05-21 2 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> 

Если вам необходимо выполнить все эти команды, чтобы на каждом файле, прежде чем перейти к следующему, небольшой Баш скрипт может быть понятнее

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 цикл понятнее и, вероятно, немного быстрее, чем find plus xargs. Предполагая, что вы используете оболочку по умолчанию, 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).

Смежные вопросы