从unix命令行上的文件中的行创建路径

时间:2013-05-06 09:06:05

标签: shell unix command-line

我想在bash脚本中构建一个基本的Java类路径。

此命令可以处理我路径中的所有jar文件:

find ~/jars | grep \.jar$

这列出了我在路径上想要的所有jar文件,每行一个。

如何将这些行连接起来,使它们在一行上,以:分隔,并将其放入我调用Java时可以在脚本中使用的变量中?

E.g:

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

3 个答案:

答案 0 :(得分:2)

如果您已经使用过find,则不需要管道。

找到-regex-name选项,还有printf可用:

您可以根据您的要求尝试:

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

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

答案 1 :(得分:1)

你可以管道它并使用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' ':'

基于SED: How can I replace a newline (\n)?

答案 2 :(得分:1)

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