免费注册 查看新帖 |

Chinaunix

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

如何查找出非succ的文件并写入磁带 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-16 15:49 |只看该作者 |倒序浏览
[root@amanda1 work.bak]# ll
total 24
-rw-r--r--  1 root root     0 Nov 16 14:41 20101026__1.txt
-rw-r--r--  1 root root 10240 Nov 16 15:35 20101026__1.txt.tar
-rw-r--r--  1 root root     0 Nov 16 14:53 20101026_OA_1.txt
-rw-r--r--  1 root root     0 Nov 16 15:29 20101026_OA_1.txt.succ
-rw-r--r--  1 root root 10240 Nov 16 15:35 20101026_OA_1.txt.tar


如上,假若该目录下有很多文件 , 某个文件已写入磁带,则会在该目录下创建一个同名的succ文件。该文件不需要再写入磁带

怎么查找出没有succ标记的文件    并 写入磁带   
写入磁带命令: tar  rvf  /dev/st0  UFileName

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2010-11-16 16:56 |只看该作者
本帖最后由 jason680 于 2010-11-16 17:09 编辑
[root@amanda1 work.bak]# ll
total 24
-rw-r--r--  1 root root     0 Nov 16 14:41 20101026__1.txt
- ...
wenyunqiu 发表于 2010-11-16 15:49
  1. for i in $(ls *.txt) ; do
  2.   file_succ=${i}".succ"
  3.   if [ ! -f $file_succ ]; then
  4.      echo $file
  5.      # your command
  6.   fi
  7. done
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-11-16 17:26 |只看该作者
for i in $(ls work.bak/ | grep -v "succ") ; do
                file_succ=${i}".succ"
                file_tar=${i}".tar"
                cd "work.bak"
                if [ ! -f $file_succ ]; then
                        echo $i
                        tar cf $file_tar $i
                fi
        done
参照楼上兄弟的思路    测试了一把    打包成功   也合乎要求
但为什么会抛出以下报错
[root@amanda1 weihu]# ./test
20101026__1.txt
./test: line 4: cd: work.bak: No such file or directory
./test: line 4: cd: work.bak: No such file or directory
201011161621_OA_fs.txt

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2010-11-16 17:33 |只看该作者
本帖最后由 jason680 于 2010-11-16 17:37 编辑
for i in $(ls work.bak/ | grep -v "succ" ; do
                file_succ=${i}".succ"
              ...
wenyunqiu 发表于 2010-11-16 17:26



因为cd ....在 for中
第一次OK, 第二次(三,四...次) cd 就会有问题

cd放在for前面 cd一次就好 (ls 要注意,目錄問題)

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2010-11-17 09:23 |只看该作者
for i in $(ls work.bak/ | grep -v "succ" ; do
                file_succ=${i}".succ"
              ...
wenyunqiu 发表于 2010-11-16 17:26



    不用cd,文件前面加上它所在目录就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP