将字符串连接到bash / csh中每个输出行的末尾

时间:2011-02-08 15:58:20

标签: bash string-concatenation

在bash命令行中,如果我运行“find.-name'abc *'”,它会打印出一个文件名列表,如

abc1
abc2
abc3

如何使用echo或其他命令来管道它,以便我得到这个输出:

abc1   ok
abc2   ok
abc3   ok

9 个答案:

答案 0 :(得分:11)

find . -name 'abc*' | sed 's/$/\tok/' | column -t

sed将字符串<Tab>ok附加到每一行,column很好地格式化输出(如果您不需要,可以跳过此处)。

答案 1 :(得分:10)

我倾向于写:

whatever | while read line; do echo $line ok; done

对于这么简单的事情来说,这可能有些过分,但如果你想用线做更复杂的事情,它就变得最简单了。它不涉及记住如何使sed工作!

答案 2 :(得分:6)

使用GNU find,

find . -name "abc*" -printf "%f ok\n"

答案 3 :(得分:5)

简单地说:

$ find . -name 'abc*' | xargs -I {} echo {} OK

答案 4 :(得分:4)

通过sed管道,是一种方式:

 | sed -e 's/\(^.*\)/\1   ok/'

答案 5 :(得分:2)

您可以使用xargs

find -iname "abc" | xargs -IREPL echo REPL ok

答案 6 :(得分:0)

查看paste标准命令。或者对于find将使您手动回显该文件名上的文件名和函数结果的每个元素。

你能告诉你最后想做什么吗?

答案 7 :(得分:0)

使用类似的东西:

find . -name "abc*" -exec echo "{} - ok" \;

答案 8 :(得分:0)

find . -name 'abc*' -exec echo {}' OK' \; | column -t