免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Shell cp数据
12下一页
最近访问板块 发新帖
查看: 2714 | 回复: 10
打印 上一主题 下一主题

cp数据 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-15 09:23 |只看该作者 |倒序浏览
我想请问一下,我在使用
ls -rlt显示当前目录文件,发现有的显示年份,有的显示具体的时间.我根本无法取得具体的时间.
我现在要将该目录中在一天内产生的文件copy到一个时间文件夹内,这个过程要计算机自动完成,
如要将/export/home/asx/nanya/009目录中  2007/11/14 00:00:00 到2007/11/14 24:59:59那段时间产生的文件放到20071114文件夹.
具体怎么做啊?

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
2 [报告]
发表于 2007-11-15 09:42 |只看该作者
ls -l | awk '$6=="Nov"&&$7==14{print "cp "$NF" 20071114"}' | sh

论坛徽章:
0
3 [报告]
发表于 2007-11-15 09:45 |只看该作者
楼主说的是每天的,时间没有确定

论坛徽章:
0
4 [报告]
发表于 2007-11-15 09:53 |只看该作者
是每天都要在23:59:59运行该程序,然后将当天的文件全部放入当天文件夹中

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
5 [报告]
发表于 2007-11-15 09:59 |只看该作者
原帖由 xp20683 于 2007-11-15 09:53 发表
是每天都要在23:59:59运行该程序,然后将当天的文件全部放入当天文件夹中


那就把月日换成变量。

ls -l | awk '$6=='"$Month"'&&$7=='"$Day"'{print "cp "$NF" 20071114"}' | sh

论坛徽章:
0
6 [报告]
发表于 2007-11-15 10:15 |只看该作者

  1. #!/bin/bash
  2. DAY=$(date +%Y%m%d)
  3. SRC='/export/home/asx/nanya/009'
  4. DST='/backup'
  5. [ ! -d "${DST}/${DAY}" ] && mkdir "${DST}/${DAY}"
  6. ls -l  --time-style=+%Y%m%d "${SRC}" | awk -v day="${DAY}" '/^-/&&$6==day{print $6,$7}' |
  7. while read fday fname
  8. do
  9.     [ ! -f "${DST}/${DAY}/${fname}" ] && cp "${SRC}/${fname}" "${DST}/${DAY}"
  10. done
复制代码

注:如果要复制指定日期的文件,就指定DAY变量就可以了

如果想对目录下的所有文件归类,而不是指定日期:

  1. SRC='/export/home/asx/nanya/009'
  2. DST='/backup'
  3. ls -l  --time-style=+%Y%m%d "${SRC}" | awk '/^-/{print $6,$7}' |
  4. while read fday fname
  5. do
  6.     [ ! -d "${DST}/${fday}" ] && mkdir "${DST}/${fday}"
  7.     [ ! -f "${DST}/${fday}/${fname}" ] && cp "${SRC}/${fname}" "${DST}/${fday}"
  8. done
复制代码

[ 本帖最后由 springwind426 于 2007-11-15 10:20 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2007-11-15 10:27 |只看该作者

回复 #6 springwind426 的帖子

很好的代码!学习了

论坛徽章:
0
8 [报告]
发表于 2007-11-15 10:55 |只看该作者
T5581-01% sh cp.csh
ls: illegal option -- -
ls: illegal option -- e
ls: illegal option -- -
ls: illegal option -- y
ls: illegal option -- e
ls: illegal option -- =
ls: illegal option -- +
ls: illegal option -- %
ls: illegal option -- Y
ls: illegal option -- %
ls: illegal option -- %

ls那边好象有点问题

论坛徽章:
0
9 [报告]
发表于 2007-11-15 11:20 |只看该作者
原帖由 xp20683 于 2007-11-15 10:55 发表
T5581-01% sh cp.csh
ls: illegal option -- -
ls: illegal option -- e
ls: illegal option -- -
ls: illegal option -- y
ls: illegal option -- e
ls: illegal option -- =
ls: illegal option -- +
...



没有用过csh

我的那个代码是在bash中运行的

论坛徽章:
0
10 [报告]
发表于 2007-11-15 13:30 |只看该作者
现在要使用sh,怎么做啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP