免费注册 查看新帖 |

Chinaunix

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

循环查看多个文件内容的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-23 12:37 |只看该作者 |倒序浏览
小弟是初学者,现有如下问题
      当前目录内有多个文件,想通过脚本方式,自动查看每个文件的内容,并显示在终端内。

我的想法如下
-----------------------------------------------------------
#!/bin/bash
ls -l >file
File=file
{
read l1
read l2
read l3
read l4
read l5
read l6
read l7
read l8
read l9
read l10
read l11
read l12
}<$File

for i in l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
do
#       echo "$i"|awk '{print $9}'
         cat  $(echo "$i"|awk '{print $9}')
        sleep 3
done

可是不成功,如果把cat  $(echo "$i"|awk '{print $9}')中的$i换成循环列表中的某个值,可以显示该值对应的文件内容。
请问我该怎么修改呢?

论坛徽章:
0
2 [报告]
发表于 2009-11-23 12:42 |只看该作者
for x in `seq 1 12`; do cat $x|awk '{print $9}' && sleep 3;done

= =为啥高那么复杂...

论坛徽章:
0
3 [报告]
发表于 2009-11-23 12:53 |只看该作者

回复 #2 cxfcxf 的帖子

谢谢,我试试
我刚开始接触SHELL,SED还不太了解。

论坛徽章:
0
4 [报告]
发表于 2009-11-23 12:58 |只看该作者
如果你要目录的话

for x in `ls ./`;do cat $x;done

不是很理解你的意思- -

论坛徽章:
0
5 [报告]
发表于 2009-11-23 12:59 |只看该作者

回复 #2 cxfcxf 的帖子

不行哦
#!/bin/bash
ls -l >file
File=file
{
read r1
read r2
read r3
read r4
read r5
read r6
read r7
read r8
read r9
read r10
read r11
read r12
}<$File

for i in r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12
do
#       echo "$i"|awk '{print $9}'
         cat  $(echo "$i"|awk '{print $9}')
        sleep 3
done


我的文件列表如下

-rwxrwxrwx    1 root root  316  11月 23 12:58  catsh
-rw-r--r--        1 root root  568   11月 23 12:58  file
-rwxr-xr-x       1 root root  107  11月 23 11:40  umntall
-rwxrwxrwx    1 root root  44    11月 23 11:40  umntd
-rwxr-xr-x       1 root root  43    11月 23 11:46  umnte
-rwxr-xr-x       1 root root  46    11月 23 11:53  umntext3
-rwxr-xr-x       1 root root  43    11月 23 11:47  umntf
-rwxr-xr-x       1 root root  46    11月 23 11:47  umntinfo
-rwxr-xr-x       1 root root  100  11月 23 11:53  umntmdisk
-rwxr-xr-x       1 root root  46    11月 23 11:47  umntsoft
-rwxr-xr-x       1 root root  41    11月 23 11:43  umntwin

[ 本帖最后由 janescrazy 于 2009-11-23 13:01 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-11-23 13:11 |只看该作者
你是不是要 分别cat这些文件 是的话 就
for x in `ls /pathtodir`;do cat /pathtodir/$x;done

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
7 [报告]
发表于 2009-11-23 13:32 |只看该作者
原帖由 cxfcxf 于 2009-11-23 13:11 发表
你是不是要 分别cat这些文件 是的话 就
for x in `ls /pathtodir`;do cat /pathtodir/$x;done


这个和 直接 cat 有什么区别?


cat /pathtodir/*

论坛徽章:
0
8 [报告]
发表于 2009-11-23 13:38 |只看该作者
首先他要循环
其次 如果我要在do 后面加多余的东西 比如sed 你这个行么
这个就是区别

论坛徽章:
0
9 [报告]
发表于 2009-11-23 15:45 |只看该作者

回复 #6 cxfcxf 的帖子

就是这个样子,谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP