在UNIX命令行上的文件创建从线的路径(create a path from lines in a

2019-10-18 03:24发布

我想建立一个bash脚本一个基本的Java类路径。

此命令的工作了所有的jar文件在我的路走:

find ~/jars | grep \.jar$

这里列出了我的道路,每行一个对所有的jar文件我想要的。

我怎么能一起加入这些行,以便它们在同一行,分隔:并将它放入一个变量时,我调用Java我可以在我的脚本中使用?

例如:

JARS=`find ~/jars | grep \.jar$`
#### somehow make JARS into one line with : between entries
java -cp $JARS ...

Answer 1:

你可以把它管道,并与SED变化的新线,

sed ':a;N;$!ba;s/\n/:/g'

全部一起,

find ~/jars | grep \.jar$ | sed ':a;N;$!ba;s/\n/:/g'

您也可以做到这一点tr ,但它留下了尾随冒号( 格伦·杰克曼评论 ):

find ~/jars | grep \.jar$ | tr '\n' ':'

基于SED:我如何替换换行符(\ n)?



Answer 2:

如果你已经使用find ,你不需要管。

发现有-regex-name选项,也有printf可供选择:

你可以试试这个为您的要求:

find ~/jars -name "*.jar" -printf"%p "

我没有测试,但它会输出完整路径,分隔空间所有的罐子。



Answer 3:

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


文章来源: create a path from lines in a file on the unix command line