免费注册 查看新帖 |

Chinaunix

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

请问如何取出目录下文件名中的字符,作为变量使用! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-17 14:55 |只看该作者 |倒序浏览
问题重新整理下:

环境:
在目录/test下面,有N个 test_yyyymmdd.dmp的文件

我想取出文件名中的yyyymmdd部分,作为变量,用作oracle sqlldr的日期插入到表中,请问,如何只取文件中的这一部分。
谢谢

#ls
for.sh                   test_20061105.dmp  test_20061215.dmp  test_20070125.dmp  test_20070301.dmp  test_20070410.dmp  
test_20061001.dmp  test_20061110.dmp  test_20061220.dmp  test_20070130.dmp  test_20070305.dmp  test_20070415.dmp  
test_20061005.dmp  test_20061115.dmp  test_20061225.dmp  test_20070201.dmp  test_20070310.dmp  test_20070420.dmp  
test_20061010.dmp  test_20061120.dmp  test_20061230.dmp  test_20070205.dmp  test_20070315.dmp  test_20070425.dmp  
test_20061015.dmp  test_20061125.dmp  test_20070101.dmp  test_20070210.dmp  test_20070320.dmp  test_20070430.dmp  
test_20061020.dmp  test_20061130.dmp  test_20070105.dmp  test_20070215.dmp  test_20070325.dmp  test_20070501.dmp
test_20061025.dmp  test_20061201.dmp  test_20070110.dmp  test_20070220.dmp  test_20070330.dmp  test_20070505.dmp
test_20061030.dmp  test_20061205.dmp  test_20070115.dmp  test_20070225.dmp  test_20070401.dmp  test_20070510.dmp
test_20061101.dmp  test_20061210.dmp  test_20070120.dmp  test_20070228.dmp  test_20070405.dmp  test_20070515.dmp

#more for.sh
. /test/.profile

cd /test

mmm=`find /test -name "*.LST" -print |cut -c11-20`

for i in $mmm
do
        sqlldr yy/yy@test parfile=inter.par control=load.ctl data="test_"$mmm".dmp"
done

在sqlldr的控制文件里写:
LOAD DATA
APPEND INTO TABLE "test_"$mmm
TRAILING NULLCOLS
(
rq  $mmm,
PHONE_CODE position(01:20),
ESN        position(22:35)
)

这$mmm,就是我要取出来的值,请问可以做么?

[ 本帖最后由 dadupi 于 2007-5-17 16:15 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-05-17 15:07 |只看该作者
cut -c5-12

论坛徽章:
0
3 [报告]
发表于 2007-05-17 15:32 |只看该作者
#ls
for.sh                   test_20061105.dmp  test_20061215.dmp  test_20070125.dmp  test_20070301.dmp  test_20070410.dmp  
test_20061001.dmp  test_20061110.dmp  test_20061220.dmp  test_20070130.dmp  test_20070305.dmp  test_20070415.dmp  
test_20061005.dmp  test_20061115.dmp  test_20061225.dmp  test_20070201.dmp  test_20070310.dmp  test_20070420.dmp  
test_20061010.dmp  test_20061120.dmp  test_20061230.dmp  test_20070205.dmp  test_20070315.dmp  test_20070425.dmp  
test_20061015.dmp  test_20061125.dmp  test_20070101.dmp  test_20070210.dmp  test_20070320.dmp  test_20070430.dmp  
test_20061020.dmp  test_20061130.dmp  test_20070105.dmp  test_20070215.dmp  test_20070325.dmp  test_20070501.dmp
test_20061025.dmp  test_20061201.dmp  test_20070110.dmp  test_20070220.dmp  test_20070330.dmp  test_20070505.dmp
test_20061030.dmp  test_20061205.dmp  test_20070115.dmp  test_20070225.dmp  test_20070401.dmp  test_20070510.dmp
test_20061101.dmp  test_20061210.dmp  test_20070120.dmp  test_20070228.dmp  test_20070405.dmp  test_20070515.dmp

#more for.sh
. /test/.profile

cd /test

mmm=`find /test -name "*.LST" -print |cut -c11-20`

for i in $mmm
do
        touch $mmm".log"
done

____________________________

这样生成不了。请问应该怎么做才行。

论坛徽章:
0
4 [报告]
发表于 2007-05-17 15:34 |只看该作者
以上不能获取日期变量,报错。

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
5 [报告]
发表于 2007-05-17 15:40 |只看该作者
ls|tr -cd '[0-9]\n'|xargs -i touch {}.log

论坛徽章:
0
6 [报告]
发表于 2007-05-17 15:40 |只看该作者
你先看看你的$mmm是什么再说,不要想当然了
find 的结果可以直接给 cut 么

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2007-05-17 15:52 |只看该作者
不就是改名嘛~~~, waker大人的最佳

论坛徽章:
0
8 [报告]
发表于 2007-05-17 15:57 |只看该作者
谢谢两位,其实在真实环境里,并不是要拿取出来的字符建立文件,而是用于oracle sqlldr的默认字符来输入,比如说,在sqlldr的控制文件里写:
LOAD DATA
APPEND INTO TABLE "test_"$mmm
TRAILING NULLCOLS
(
rq  $mmm,
PHONE_CODE position(01:20),
ESN        position(22:35)
)

这$mmm,就是我要取出来的值,请问可以做么?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
9 [报告]
发表于 2007-05-17 16:00 |只看该作者
挤牙膏呢~~~ ^_^

论坛徽章:
0
10 [报告]
发表于 2007-05-17 16:08 |只看该作者
各位帮帮忙啊,是我没说清楚么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP