В командной строке bash, если я запускаю "find. -Name 'abc *'", он выводит список имен файлов, например
abc1 abc2 abc3
Как я могу передать его с помощью echo или другой командытак что я получаю этот вывод:
abc1 ok abc2 ok abc3 ok
find . -name 'abc*' | sed 's/$/\tok/' | column -t
sed добавляет строку <Tab>ok к каждой строке и column хорошо форматирует вывод (вы можете просто пропустить это, если вам это не нужно).
sed
<Tab>ok
column
Я склонен писать:
whatever | while read line; do echo $line ok; done
Это может быть излишним для чего-то такого простого, но это становится самым простым делом, если вы хотите делать более сложные вещи со строкой.И это не предполагает запоминания того, как заставить sed работать!
С GNU найти,
find . -name "abc*" -printf "%f ok\n"
Просто:
$ find . -name 'abc*' | xargs -I {} echo {} OK
Труба через седь, это один из способов:
| sed -e 's/\(^.*\)/\1 ok/'
Вы можете использовать xargs:
xargs
find -iname "abc" | xargs -IREPL echo REPL ok
find . -name 'abc*' -exec echo {}' OK' \; | column -t
Используйте что-то вроде этого:
find . -name "abc*" -exec echo "{} - ok" \;
Посмотрите на стандартную команду paste.Или для каждого элемента того, что find заставит вас вручную отобразить имя файла и результат функции с этим именем.
paste
find
Не могли бы вы сказать, что вы, наконец, хотите сделать?