我正在尝试使用 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
,但徒劳无功。
答案1
您可以使用|sh -x
。来自手册页:
-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.
因此 shell 将打印stderr
所有执行的命令。并且您可以使用 stderr 重定向,例如|sh -x 2>commands_list.txt
在单独的文件中获取命令列表。
答案2
cp
可以告诉你它在做什么,这是选项
-v, --verbose
explain what is being done
将哪些文件复制到了哪里打印到标准输出,格式如下:
‘file1’ -> ‘file2’