如何跨多个目录使用生成器?
我有一个目录,其中有很多子目录。 那些副族有时甚至有副族。 里面有源文件。
我怎么可以用ge to穿越所有的这些d子和sub子呢?
假设我在terminal中input我的根目录,然后input:
genstrings -o en.lproj *.m
我怎么能告诉它现在看看所有这些目录? 或者我将不得不添加很多相对path逗号分隔? 怎么样?
一种方法是:
find ./ -name "*.m" -print0 | xargs -0 genstrings -o en.lproj
xargs是一个很好的shell-foo。 它将采用标准的string并将它们转换为下一个函数的参数。 这将填充您的genstrings命令与当前目录下的每个.m文件。
这个答案handels在所用的path中的空间,所以它更健壮。 您应该使用它来避免在处理源文件时跳过文件。
编辑:如评论和其他答案中所述,* .m应引用。
我不知道为什么,但是布赖恩的命令并不适合我。 这样做:
find . -name \*.m | xargs genstrings -o en.lproj
编辑:那么,当我最初写这个,我匆忙,只是需要的东西,工作。 在使用上面所接受的答案时,我所遇到的问题是,必须引用“* .m”(好奇的可以find一个解释,为什么Brian King的答案的评论是这样的)。 我认为最好的解决办法是用适当的位引用原来的答案,然后读取:
find ./ -name "*.m" -print0 | xargs -0 genstrings -o en.lproj
尽pipe如此,我仍然保留原来的答复,以免因任何原因帮助任何人。
这适用于我:
find ./ -name \*.m -print0 | xargs -0 genstrings -o en.lproj
感谢Brian和Uberhamster。
不知道是否有人注意到它或稍后的选项,但现在有一个-a
选项是genstrings。 上述选项都不适合我。 以下是我的解决scheme。
find ./ -name "*.m" -exec echo {} \; -exec genstrings -a -o en.lproj {} \;
这也将打印读取的文件的名称。
虽然上面的命令工作正常,但它不完全是我的,因为在我的项目文件夹中有许多文件在文件夹中,但没有包含在Xcode项目。 所以我做的是,通过parsingpbxproj文件创build了我的项目中使用的文件列表。 在filelist.txt中添加了列表,并在命令下面触发
while read f; do find ./ -name "$f" -exec echo {} \; -exec genstrings -a -o en.lproj {} \; ; done < filelist.txt
我只是给genstrings命令添加了另一条path,如下所示:
genstrings -o en.lproj *.m Classes/*.m
..它工作得很好!
顺便说一句。 一个方便的东西关于genstrings。 当您继续开发应用程序时,genstrings有一个-a开关,将新string附加到本地化的string文件。
我在.mm文件中有很多代码,所以我必须使用:
find . -name \*.m -or -name \*.mm | xargs genstrings
或其他变体,例如
find . -name \*.m -or -name \*.mm | xargs -0 genstrings -o en.lproj
以下答案改进了以前的答案,这将find.h和.m文件:
find ./ -name *.h -print0 -o -name *.m -print0 | xargs -0 genstrings -o en.lproj
我有问题生成一个文件夹结构的string文件,其中一些文件夹的名称中有空格。
我在这个网站上find了一个很好的解决scheme: http : //riveroften.com/generate-localizable-strings-file-with-genstrings/
find . -name "*.m" -print0 | xargs -0 genstrings -o "en.lproj"
find./ -name“* .m”-print0 | xargs -0 genstrings -o en.lproj
这会将每个.m文件的genstrings命令填充到当前目录。 在Localizable.string文件中创buildNSLocalizedString()“key / context”,它可以在项目中的任何地方使用。
迅速
find ./ -name \*.swift -print0 | xargs -0 genstrings -o .en.lproj
如果你需要在同一个文件夹中的文件
find ./ -name \*.swift -print0 | xargs -0 genstrings -o .
尝试这个
genstrings -o English.lproj ./Classes/*.m ./Classes/*.h ./Classes/subclass/*.m
如果子文件夹不是太多,这将完美的工作。