Как использовать genstrings через несколько каталогов?

У меня есть каталог, который имеет много подкаталогов. те subdirs иногда даже имеют subdirs. внутри существуют исходные файлы.

Как я мог использовать genstrings для движения через всех этих директоров и subdirs?

Скажем, я CD к моему корневому каталогу в Терминале, и затем я ввел бы это:

genstrings -o en.lproj *.m

Как я мог сказать этому теперь изучать все эти каталоги? Или я должен был бы добавить много разделенной запятой относительных путей? как?

58
задан Douwe Maan 30 April 2010 в 12:51
поделиться

2 ответа

Одним из методов было бы:

find ./ -name "*.m" -print0 | xargs -0 genstrings -o en.lproj

xargs - хороший кусок shell-foo. Он возьмет строки на standard in и преобразует их в аргументы для следующей функции. Это заполнит вашу команду genstrings каждым файлом .m под текущим каталогом.

Этот ответ обушает пробелы в используемом пути, поэтому он более надежен. Вы должны использовать его, чтобы избежать пропуска файлов при обработке исходных файлов.

Правка: как сказано в комментариях и в других ответах, *.m должны быть процитировано.

99
ответ дан 24 November 2019 в 18:37
поделиться

Я не знаю точно почему, но команда Брайана не сработала для меня. Это сделало:

find . -name \*.m | xargs genstrings -o en.lproj

РЕДАКТИРОВАТЬ: Что ж, когда я изначально писал это, я очень спешил, и мне просто нужно было что-то, что работало. Проблема, которая возникла у меня при использовании принятого выше ответа, заключалась в том, что необходимо указать "* .m" (и любопытные могут найти объяснение, почему это так, в комментариях к ответу Брайана Кинга). Я думаю, что лучшим решением будет использовать этот исходный ответ с указанием соответствующего бита, который затем будет выглядеть так:

find ./ -name "*.m" -print0 | xargs -0 genstrings -o en.lproj

Я оставляю свой исходный ответ нетронутым выше, на случай, если он по-прежнему кому-то поможет по какой-либо причине.

89
ответ дан 24 November 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: