如何使用printf打印多个变量

时间:2019-08-24 22:51:05

标签: linux bash shell grep

我正在尝试让printf在一行上输出多个变量。

难以处理printf的参数处理和格式,并且收到意外结果。

代码段

printf '%s %s %s' $infile $insize $indate 2>&1 | tee -a $logfile
find $infile -printf ' %p %s %CY-%Cm-%Cd %CH:%CM:%.2TS \n' 2>&1 | tee -a $logfile

意外结果
*第一个文件大小未显示,日期和时间不正确(printf)
*第二个文件大小正确,日期和时间不正确(查找-printf)

ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp 2019-08-25 00:00:00 ./README.ftp 2037 2019-08-25 14:22:26

预期结果

ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp 2037 2015-08-12 15:47:26 ./README.ftp 2037 2019-08-24 20:32:53

远程文件

Last-Modified: Wed, 12 Aug 2015 15:47:26 GMT
Content-Length: 2037

本地文件

2037 Aug 13  2015 README.ftp

谢谢。

1 个答案:

答案 0 :(得分:0)

解决方案

printf '%s %d %s' "$infile" "$insize" "$indate" 2>&1 | tee -a "$logfile"
find "$infile" -printf ' %p %s %CY-%Cm-%Cd %CH:%CM:%.2TS \n' 2>&1 | tee -a "$logfile"

结果

ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp 2037 2015-08-12 15:47:26 ./README.ftp 2037 2019-08-24 20:32:53

man 1 printf清晰,简单地说明了参数处理。

GNU format summary的输出转换手册表