[英]How to print ftp file information using curl and printf
我正在尝试获取文件信息以进行批量下载,并且无法使用管道连接到printf。
测试用例
$ curl -sI ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp
Last-Modified: Wed, 12 Aug 2015 15:47:26 GMT
Content-Length: 2037
Accept-ranges: bytes
一个适合文件大小的简单grep剪切
$ curl -sI ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp | grep Content-Length | cut -d ' ' -f 2
2037
Grep剪切正在处理文件日期和时间
$ curl -sI ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp | grep Last-Modified | cut -d ' ' -f 3,4,5,6
12 Aug 2015 15:47:26
但是,将grep扩展到cut到printf不适用于服务器文件日期和时间,printf是否返回本地系统日期和时间?
$ curl -sI ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp | grep Last-Modified | cut -d ' ' -f 3,4,5,6 | printf '%(%Y-%m-%d %H:%M:%S)T '
是本地日期和时间,而不是远程日期和时间?
2019-08-24 20:32:53
文件大小和日期将在脚本中用于批量下载和自定义日志记录。 这些东西...
infilesize=$(curl -sI $inpath/$infile | grep Content-Length | cut -d ' ' -f 2)
infiledate=$(curl -sI $inpath/$infile | grep Last-Modified | cut -d ' ' -f 3,4,5,6 | printf '%(%Y-%m-%d %H:%M:%S)T ' )
printf $infilesize 2>&1 | tee -a $logpath/$logfile
printf $infiledate 2>&1 | tee -a $logpath/$logfile
我的第一个障碍是修复printf的管道语法?
对sed和awk的其他管道方法开放。
相对缺乏bash的经验,因此希望了解详细的代码建议和/或优美的代码和说明,并希望学习良好的技术。
提前致谢。
更新
date
子shell方法适用于远程服务器文件的日期和时间。
但是,我现在在printf
上遇到问题,无法在一行上输出多个变量。 我环顾四周,但难以理解printf的参数处理方式并收到意外结果。
printf $infilename $infilesize $infiledate 2>&1 | tee -a $outpath/$logfile.txt
这是一个单独的问题, 我该如何使用printf打印多个变量
您甚至不需要printf
,只需使用date
的子shell显示cut
日期信息:
curl -sI ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp | grep Last-Modified | \
date -d "$(cut -d ' ' -f 3,4,5,6)" "+%Y-%m-%d %H:%M:%ST"
结果:
2015-08-12 15:47:26T
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.