我正在尝试让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
谢谢。
答案 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的输出转换手册表