+ -
当前位置:首页 → 问答吧 → ftp_today ls -l |awk '/^-/ && $6=="'$month'" && $7==&q

ftp_today ls -l |awk '/^-/ && $6=="'$month'" && $7==&q

时间:2011-10-09

来源:互联网

求解一段shell语句

files=$(ftp_today ls -l |awk '/^-/ && $6=="'$month'" && $7=="'$day'"{print $NF}' |xargs)


麻烦请详细解释下,谢谢

作者: xiaolei87820   发布时间: 2011-10-09

files=$(ftp_today ls -l |awk '/^-/ && $6=="'$month'" && $7=="'$day'"{print $NF}' |xargs)

将 ftp_today ls -l的结果传给awk处理 ,在行首有- 并且第六个参数为month 同时 第七个参数为day.打印出字段个数,传输给xargs
为什么这么判断呢,因为 ls -l的结果输出中格式类似
-rw-r--r-- 1 vestige vestige 5108519 2011-09-22 17:41 tags
想找普通文件.

确实有点让人费解.干嘛输出NF呢...
具体还要看别的东西了

作者: jihen   发布时间: 2011-10-09

先执行ftp_today这个脚本或者命令,然后ls -l当前目录。

结果通过管道传递给awk处理,$month应该是一个外部定义好了的变量,$day也是。

过滤的条件是以横杠开头,同时第六列是month,第七列是day,就打印该行的总的列数。

然后结果给xargs,一列显示变为一行显示。

作者: linwhwylb   发布时间: 2011-10-09

楼上 已经 够 详细了吧?

需要再解释吗 ? LZ ...

作者: cenziboy   发布时间: 2011-10-09

多谢大家。
“结果传给xargs,一列显示变为一行显示。”是什么意思?
{print $NF} 是打印出最后一列的内容吧?

作者: xiaolei87820   发布时间: 2011-10-09