1

Я пытаюсь скопировать файлы, отсутствующие в одном каталоге, в другой каталог с помощью awk.

diff -r dir1 dir2 | grep dir1 | awk '{$1=$2=$3 =""; print "cp \"./dir1/" substr($0,4) "\" ./dir2/"}' | sh

Это прекрасно работает, за исключением того, что я также хочу напечатать файл, который копируется. Что-то вроде cp ./dir1/file1.txt ./dir2/ на стандартный stdout

Как мне это сделать. Я знаю, что это просто, но я не могу понять это. Я пробовал команды tee и echo но тщетно.

2 ответа2

2

cp может сказать вам, что он делает тоже, это вариант

-v, --verbose
          explain what is being done

выводит в stdout какие файлы копируются куда, в виде:

‘file1’ -> ‘file2’
2

Вы могли бы использовать |sh -x . С man-страницы:

 -x xtrace
         Write each command (preceded by the value of the PS4 variable
         subjected to parameter expansion and arithmetic expansion) to
         standard error before it is executed.  Useful for debugging.

Таким образом, оболочка выведет в stderr все выполненные команды. И вы можете использовать перенаправление stderr, например |sh -x 2>commands_list.txt чтобы получить список команд в отдельном файле.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .