2011-02-08 7 views
9

内のすべての出力行の末尾に文字列を連結「を見つける。-name 『ABC *』」、それは、bashのコマンドラインでは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使用することができます、それはsedを経由

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

パイプを、一つの方法である:

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

使用このような何か:

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

単に:

この単純な何かのためにやり過ぎかもしれない
whatever | while read line; do echo $line ok; done 

が、それは次のようになります。

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

ない私の答えから本当に違う、見つけ、それを何ですか? – histumness

10

私が書く傾向にありますあなたがラインでもっと複雑なことをしたい場合は、最も簡単なことです。そして、それはセックスの仕事をする方法を覚えている必要はありません! GNUで

6

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

シンプルで、別のツールは必要ありません。 +1 – Boldewyn

0
find . -name 'abc*' -exec echo {}' OK' \; | column -t 
関連する問題