免费注册 查看新帖 |

Chinaunix

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

如何比较2目录下的文件并进行相应拷贝改名等操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-19 13:56 |只看该作者 |倒序浏览
本帖最后由 wenyunqiu 于 2010-11-19 14:06 编辑

/cent_backup目录下文件如下            /cent_backup_temp目录下文件如下
1.tar       20101011                        20101011_1.tar
2.tar       20101012                        20101012_2.tar
3.tar       20101013                        20101013_3.tar
4.tar       20101104                        20101011_1.tar.succ
5.tar       20101105                        20101012_2.tar.succ
                                                     
以上的20101105 这样的字段是该文件的创建时间  ,也就是ls -l --time-style +%Y%m%d                                                     
如何比较2个目录下的文件,当在/cent_backup_temp目录下没有发现对应的改名文件时,就从/cent_backup目录拷贝并改名
如上面例子中的 4.tar    5.tar      则执行拷贝并改名:  4.tar  ---> 20101104_4.tar         5.tar--->20101105_5.tar

同时查看/cent_backup_temp目录下的文件,当没有发现对应的succ文件时,执行tar -rvf /dev/st0  filename写磁带操作,写入成功,生成一个同名的succ文件

论坛徽章:
0
2 [报告]
发表于 2010-11-19 14:17 |只看该作者
本帖最后由 bjsfeng 于 2010-11-19 14:33 编辑

cp 操作
  1. ls /cent_backup_temp/*.tar | sed 's?^.*_??' >tmp.lst
  2. ls /cent_backup/* | grep -vf tmp.lst | sed 's?^\/cent_backup\/\(.*tar\).*\(20......\)$?cp -p & \/cent_backup_temp\/\2_\1?' |/bin/sh
复制代码
tar操作类似
好像这个方法不太好 需要生成中间文件 个人水平有限 期待高手指点

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2010-11-19 14:43 |只看该作者
这个似乎可以尝试grep里面的<重定向

论坛徽章:
0
4 [报告]
发表于 2010-11-19 15:00 |只看该作者
回复 3# 昭襄王


    求牛人详解

论坛徽章:
0
5 [报告]
发表于 2010-11-19 15:06 |只看该作者
多谢楼上各位的积极回帖  

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2010-11-19 15:08 |只看该作者
回复  昭襄王


    求牛人详解
bjsfeng 发表于 2010-11-19 15:00



    牛人
  1. ls
  2. 120603-pick.tar.gz             kompozer-0.8b3.zh-CN.xpi             roms
  3. 5.0.1791.101ZH.L1              oi-dev-147-x86.iso                   splus_beta_0_60.air
  4. 5.0.1791.101ZH.L1.tar.gz       opera_10.63.6450_i386.deb            sunpinyin_importer
  5. AppTagNavigator                opera_11.00.1029_i386.deb            sunpinyin_importer.tar.bz2
  6. bittorrent-server-v3_0         opera-11.00-1029.i386.linux          symphony_3.0-1hardy1_i386.deb
  7. dlmgr.pro                      opera-11.00-1029.i386.linux.tar.bz2  symphony-nl1_3.0-1hardy1_i386.deb
  8. eclipse                        oss-linux-4.2-2003_i386.deb          ubuntu-tweak_0.5.6-1_all.deb
  9. fcitx_4.0-beta1-r424_i386.deb  PyCharm-1.0Beta2.tar.gz              utorrent-server-3.0-21886.tar.gz
  10. fcitx_4.0~beta1~r430_i386.deb  pycharm-96.1063                      virtualbox-3.2_3.2.10-66523~Ubuntu~maverick_i386.deb
  11. fcitx-config_0.1.1-1_i386.deb  ReactOS-0.3.12-REL-vbox              wine-qq_0.11_all.deb
  12. html2txt.py                    ReactOS-0.3.12-REL-vbox.zip          winetricks_0.0+20100618-0ubuntu1_i386.deb
复制代码
  1. grep ^opera <(ls)
  2. opera_10.63.6450_i386.deb
  3. opera_11.00.1029_i386.deb
  4. opera-11.00-1029.i386.linux
  5. opera-11.00-1029.i386.linux.tar.bz2
复制代码

论坛徽章:
0
7 [报告]
发表于 2010-11-19 15:25 |只看该作者
本帖最后由 bjsfeng 于 2010-11-19 15:38 编辑

grep ^opera <(ls)
不是就等于 ls opera*或者ls | grep ^opera嘛
难道你指的是可以
ls /cent_backup | grep <(ls /cent_backup_temp/*.tar | sed 's?^.*_??)
来省略中间文件?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2010-11-19 15:34 |只看该作者
grep ^opera
bjsfeng 发表于 2010-11-19 15:25



    为什么一定要管道呢?两个文本都可以<进去嘛
  1. ls
  2. install  lib  LICENSE  opera  opera-widget-manager  share
复制代码
  1. $ ls ..
  2. 120603-pick.tar.gz             kompozer-0.8b3.zh-CN.xpi             roms
  3. 5.0.1791.101ZH.L1              oi-dev-147-x86.iso                   splus_beta_0_60.air
  4. 5.0.1791.101ZH.L1.tar.gz       opera_10.63.6450_i386.deb            sunpinyin_importer
  5. AppTagNavigator                opera_11.00.1029_i386.deb            sunpinyin_importer.tar.bz2
  6. bittorrent-server-v3_0         opera-11.00-1029.i386.linux          symphony_3.0-1hardy1_i386.deb
  7. dlmgr.pro                      opera-11.00-1029.i386.linux.tar.bz2  symphony-nl1_3.0-1hardy1_i386.deb
  8. eclipse                        oss-linux-4.2-2003_i386.deb          ubuntu-tweak_0.5.6-1_all.deb
  9. fcitx_4.0-beta1-r424_i386.deb  PyCharm-1.0Beta2.tar.gz              utorrent-server-3.0-21886.tar.gz
  10. fcitx_4.0~beta1~r430_i386.deb  pycharm-96.1063                      virtualbox-3.2_3.2.10-66523~Ubuntu~maverick_i386.deb
  11. fcitx-config_0.1.1-1_i386.deb  ReactOS-0.3.12-REL-vbox              wine-qq_0.11_all.deb
  12. html2txt.py                    ReactOS-0.3.12-REL-vbox.zip          winetricks_0.0+20100618-0ubuntu1_i386.deb
复制代码
  1. ~/soft/opera-11.00-1029.i386.linux$ grep -f <(ls) <(ls ..)
  2. opera_10.63.6450_i386.deb
  3. opera_11.00.1029_i386.deb
  4. opera-11.00-1029.i386.linux
  5. opera-11.00-1029.i386.linux.tar.bz2
复制代码

论坛徽章:
0
9 [报告]
发表于 2010-11-19 16:23 |只看该作者
没看明白

论坛徽章:
0
10 [报告]
发表于 2010-11-19 16:48 |只看该作者
本帖最后由 小-菜鸟 于 2010-11-19 17:02 编辑
  1. #!/bin/bash
  2. ls -l --time-style +%Y%m%d /centos_backup/ |awk 'OFS = "_" {if (NR >1)print $6,$7}' > /tmp/sdir.txt
  3.    for file in `cat /tmp/sdir.txt`
  4.        do
  5.          if [ -f "/cent_backup_temp/$file" ]
  6.           then
  7.              echo "/cent_back_temp/$file" > /dev/null 2>&1
  8.            else
  9.                         dir=`echo $file |awk -F "_" '{print $NF}'`
  10.             cp         /centos_backup/$dir /cent_backup_temp/$file       
  11.           fi
  12.         done
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP