2011-02-08 15 views
9

在bash命令行的末尾,如果我跑“中找到。-name‘ABC *’”,它打印出像将字符串以在bash /每输出线CSH

abc1 
abc2 
abc3 
的文件名列表

如何回声或其他命令我管吧,让我得到这个输出:

abc1 ok 
abc2 ok 
abc3 ok 

回答

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

sed附加字符串<Tab>ok每一行,并column很好地格式化输出(如果你不需要它,你可以跳过这个)。

0

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

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

1

你可以使用xargs

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

管它通过战略经济对话是单向的:

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

使用这样的事情:

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

简单:

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

不是从我的答案真的不同,是吗? – histumness 2011-02-08 16:16:44

10

我倾向于写:

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

这可能是矫枉过正的东西这个简单,但它成为最简单的事情要做,如果你想用线来做更复杂的事情。而且它不涉及记住如何使sed工作!

6

随着GNU发现,

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

简单并且不需要其他工具。 +1 – Boldewyn 2011-02-08 16:46:19

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