从unix命令行上的文件中的行创建路径
我想在bash脚本中构建基本的Java类路径。从unix命令行上的文件中的行创建路径
此命令的工作了所有的jar文件在我的路走:
find ~/jars | grep \.jar$
此列出我的路径上所有jar文件我想,每行一个。
如何将这些行连接在一起,以便它们位于同一行上,并由:
分开,并将其放入我可以在调用Java时在脚本中使用的变量中?
如:
JARS=`find ~/jars | grep \.jar$`
#### somehow make JARS into one line with : between entries
java -cp $JARS ...
可以通过管道将它与SED更换新线,
:
sed ':a;N;$!ba;s/\n/:/g'
总之,
find ~/jars | grep \.jar$ | sed ':a;N;$!ba;s/\n/:/g'
您还可以使用tr
做,尽管它留下了一个尾部冒号(glenn jackman comment):
find ~/jars | grep \.jar$ | tr '\n' ':'
,如果你已经使用find
,你不需要管。
发现有-regex
和-name
选项,也有printf
可供选择:
你可以试试这个为您的要求:
find ~/jars -name "*.jar" -printf"%p "
我没有测试,但它会输出全路径的所有罐子,空间分开。
好的!另外,是否有可能为标签建议提供一些降价提议?我想取消两个我建议在http://stackoverflow.com/tags/synonyms?filter=suggested:bash别名和命令unix – fedorqui 2013-05-06 09:24:49
@fedorqui我甚至不知道SO有这个功能。 :D不知道该怎么做..对不起。 – Kent 2013-05-06 09:27:57
哈哈,只要去http://stackoverflow.com/tags/bash/synonyms和http://stackoverflow.com/tags/unix/synonyms和up/downvote。如果你想,当然!一切都在http://stackoverflow.com/privileges/suggest-tag-synonyms解释 – fedorqui 2013-05-06 09:29:13
jars=($(find ~/jars -type f -name \*.jar)) # save paths into array
classpath=$(IFS=:; echo "${jars[*]}") # convert to colon-separated
java -cp "$classpath" ... # and use it
'tr'解决方案留给你一个尾随冒号 – 2013-05-06 13:08:26
好的。我更新我的答案表明如此。谢谢。 – fedorqui 2013-05-06 13:10:38