在bash命令行中,如果我运行“find.-name'abc *'”,它会打印出一个文件名列表,如
abc1
abc2
abc3
如何使用echo或其他命令来管道它,以便我得到这个输出:
abc1 ok
abc2 ok
abc3 ok
答案 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