免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chen_chen1212
打印 上一主题 下一主题

怎么取目录下所有*.txt????? [复制链接]

论坛徽章:
0
51 [报告]
发表于 2010-06-21 15:24 |只看该作者
路过。

论坛徽章:
0
52 [报告]
发表于 2010-06-21 15:25 |只看该作者
楼主要看回帖啊,怎么一直问啊?

论坛徽章:
0
53 [报告]
发表于 2010-06-21 17:59 |只看该作者

开始没有看清楚,修改一下

本帖最后由 xiaocongwjb123 于 2010-06-21 21:14 编辑
怎么取目录下所有*.txt的文件名字,然后去掉路径和后缀只取文件名,然后更改文件名字
chen_chen1212 发表于 2010-06-17 14:39



       楼主,过程和方法一步一步讲解给你:

    (1)我们的环境:solaris 10 x86  bash
-bash-3.00# uname -a
SunOS umailtest 5.10 Generic_141445-09 i86pc i386 i86pc Solaris
-bash-3.00# bash --version
GNU bash, version 3.00.16(1)-release (i386-pc-solaris2.10)
Copyright (C) 2004 Free Software Foundation, Inc.

      (2)操作系统根目录下面有test目录,test目录下面有1,2,....等子目录,
其中1,2,,,,,下面还有二级子目录
-bash-3.00# find test -name "*.txt"
test/1/1.txt
test/1/2.txt
test/2/3.txt
test/2/4.txt
test/2/5.txt
test/2/3/33.txt
test/2/3/35.txt
test/2/4/77.txt
test/2/4/78.txt
test/3/7.txt
test/4/9.txt
test/4/3/11.txt
test/4/3/12.txt
test/5/8.txt
   
      (3)现在的任务就是要把test目录(包括test下面的子目录和相应的二级子目录等txt文件
名取出来,并重命名为log文件),操作方法如下:

1)把“/“替换成””:
-bash-3.00# find test -name "*.txt" | sed 's/\// /g'
test 1 1.txt
test 1 2.txt
test 2 3.txt
test 2 4.txt
test 2 5.txt
test 2 3 33.txt
test 2 3 35.txt
test 2 4 77.txt
test 2 4 78.txt
test 3 7.txt
test 4 9.txt
test 4 3 11.txt
test 4 3 12.txt
test 5 8.txt

2)打印每行的最后一列(得到了你要的第一个需求):  不好意思,之前没有看清楚,现在修改过来
-bash-3.00# find test -name "*.txt" | sed 's/\// /g' | awk '{print $NF}'  | cut -d \. -f1
1
2
3
4
5
33
35
77
78
7
9
11
12
8

3)把txt替换成log(得到了你的第二个需求):
-bash-3.00# find test -name "*.txt" | sed 's/\// /g' | awk '{print $NF}' | sed 's/txt/log/g'
1.log
2.log
3.log
4.log
5.log
33.log
35.log
77.log
78.log
7.log
9.log
11.log
12.log
8.log

4)写成shell脚本 collect.sh
#!/bin/bash
/bin/find test -name "*.txt" | /bin/sed 's/\// /g' | /bin/awk '{print $NF}' | /bin/cut -d \. -f1 > /txt_collect.txt
/bin/find test -name "*.txt" | /bin/sed 's/\// /g' | /bin/awk '{print $NF}' | /bin/sed 's/txt/log/g' > /log_collect.txt

     你只需要对上面的脚本做一些修改后就可以使用了。

论坛徽章:
0
54 [报告]
发表于 2010-06-22 09:16 |只看该作者
find dirname -name "*.txt" | awk -F\/ '{print $NF}' | sed "s/\.txt//g"
取名

find dirname -name "*.txt" | awk -F\/ '{print $NF}' | sed "s/\.txt/\.log/g"
修改

论坛徽章:
0
55 [报告]
发表于 2010-06-22 09:21 |只看该作者
看注册时间来的!

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
56 [报告]
发表于 2010-06-22 09:23 |只看该作者
能坚持4年才发帖~。。。。。。。。。。。厉害。
iori809 发表于 2010-06-17 14:52



    shell才子啊,好好利用,要不可惜了。

招聘 : 技术/实施/服
论坛徽章:
0
57 [报告]
发表于 2010-06-22 09:55 |只看该作者
看看注册时间

论坛徽章:
0
58 [报告]
发表于 2010-06-22 10:18 |只看该作者
取出文件名,还是内容?

论坛徽章:
0
59 [报告]
发表于 2010-06-22 11:31 |只看该作者
{:3_198:}{:3_198:}{:3_198:}

论坛徽章:
0
60 [报告]
发表于 2010-06-22 15:21 |只看该作者
更改成什么样子?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP