免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1920 | 回复: 7
打印 上一主题 下一主题

为什么这个pipe不成功 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-19 13:21 |只看该作者 |倒序浏览
我找到文件大小大于0的文件,打包到tar file。但我用第一个方法不可以,只能用麻烦的第二个,这是为什么呢?我用的是LynxOS, 第4和8列分别是大小和名字。
(1)
ls -la http_joblog.* | gawk '$4>0' | gawk '{print $8}'| tar rvf $LOG_FILE


(2)
ls -la http_joblog.* | gawk '$4>0' | gawk '{print $8}'> $TMP_FILE
while read filename
do      
        tar rvf $LOG_FILE $filename
done < $TMP_FILE


谢谢

论坛徽章:
0
2 [报告]
发表于 2003-02-19 15:02 |只看该作者

为什么这个pipe不成功

试一试:
tar -rvf aa.tar `ls -la http_joblog.*  | gawk '$4>0{print $8}'`

在FreeBSD下测试通过:
tar -rvf aa.tar `ls -la aa.zip | awk '$5>0{print $9}'`

好象前面有人讲过用tar和find结合的句子,找找看。

论坛徽章:
0
3 [报告]
发表于 2003-02-19 15:06 |只看该作者

为什么这个pipe不成功

tar cvf aa.tar `find . -size +0 -print`

论坛徽章:
0
4 [报告]
发表于 2003-02-19 15:49 |只看该作者

为什么这个pipe不成功

原帖由 "miling" 发表:
试一试:
tar -rvf aa.tar `ls -la http_joblog.*  | gawk '$4>0{print $8}'`

在FreeBSD下测试通过:
tar -rvf aa.tar `ls -la aa.zip | awk '$5>0{print $9}'`

好象前面有人讲过用tar和find结合的句?.........


************************************
tar rvf $LOG_FILE `ls -la http_joblog.* | gawk '$4>0' | gawk '{print $8}'`

谢谢。我试了,还是不可以,我的系统和你的不一样,我的是LynxOS.。没办法,我还是用我的笨办法吧。

论坛徽章:
0
5 [报告]
发表于 2003-02-19 19:54 |只看该作者

为什么这个pipe不成功

原帖由 "egghead0" 发表:


************************************
tar rvf $LOG_FILE `ls -la http_joblog.* | gawk '$4>0' | gawk '{print $8}'`

谢谢。我试了,还是不可以,我的系统和你的不一样,我的是LynxOS.。没办法,我还是?.........




为什么不用 z_ch 的说的方法呢?而且加上 -name 就可以了

tar rvf  find.tar `find . -name "http_joblog.*" -size +0`

我相信在 LynxOS 下也可以,它不就是以 Linux 为基础的吗?

论坛徽章:
0
6 [报告]
发表于 2003-02-19 21:35 |只看该作者

为什么这个pipe不成功

谢谢大家。
那个是可以,但那样用find会搜索所有子目录,而我只需要当前目录的文件。我现在用的是我的第二个方法。但我很困惑为什么第一个方法不可以

论坛徽章:
0
7 [报告]
发表于 2003-02-19 22:37 |只看该作者

为什么这个pipe不成功

原帖由 "egghead0" 发表:
谢谢大家。
那个是可以,但那样用find会搜索所有子目录,而我只需要当前目录的文件。我现在用的是我的第二个方法。但我很困惑为什么第一个方法不可以



你的第一种写法是叫 tar 把 STDIN 作为文件参数列表。可是它不会!如果要这么写的话,应该用 xargs 来传递

ls -la http_joblog.* | gawk '$4>0' | gawk '{print $8}'| xargs tar rvf $LOG_FILE

另外,想说一下,

1、这是你的原来的写法,用两次 awk 好象有点啰嗦,参考 miling 写法简化一下

2、我还是觉得 miling 的写法 tar -rvf aa.tar `ls -la aa.zip | awk '$5>0{print $9}'` 没有不通过的理由,即使在LynxOS下,因为FreeBSD和LynxOS用的都是 Gnu tar。是不是有可能是什么其它地方疏忽了

论坛徽章:
0
8 [报告]
发表于 2003-02-20 11:32 |只看该作者

为什么这个pipe不成功

原帖由 "红袖添香" 发表:



你的第一种写法是叫 tar 把 STDIN 作为文件参数列表。可是它不会!如果要这么写的话,应该用 xargs 来传递

ls -la http_joblog.* | gawk '$4>0' | gawk '{print $8}'| xargs tar rvf $LOG_FILE

另外?.........



您说的对,昨天可能我哪里搞错了,我今天用miling的方法就通过了。
tar rvf tmp.tar `ls -la http_joblog.* | gawk '$4>0 {print $8}'` 这样就比我的笨办法简单多啦。

我才学这个不久,在这学了很多东西。非常谢谢大家的帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP