Параметр «Exec» с фильтром «echo» и «awk» - PullRequest
1 голос
/ 01 декабря 2011

Вот строка, которую я хочу использовать в сценарии ksh:

find . -type f -exec echo "{} $comment" | awk '{printf "%-30s %s", $1, $2}' \;

Без awk эта строка прекрасно работает:

find . -type f -exec echo "{} $comment" \;

Когда я добавил awk для создания столбцов, у меня была эта ошибка:

awk: fatal: cannot open file `;' for reading (No such file or directory)
find: missing argument to `-exec'

Я не нахожу хороший синтаксис. Ребята, у вас есть идеи?
Спасибо!

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Есть две вещи, которые я действительно не могу понять.

  1. Что означает \;?

  2. Что такое -для в printf "%-30s %s", $1, $2?

В любом случае, попробуйте это.

$> find . -type f -exec echo "{} $comment" \; | awk '{printf "%30s %s\n", $1, $2}'
0 голосов
/ 01 декабря 2011

Это может работать для вас:

 find . -type f -exec printf "%-30s %s\n" "{}" "$comment" \; 
...