红联Linux门户
Linux帮助

新手求助:怎么把文件清单上的文件复制出来?

发布时间:2009-05-12 15:05:50来源:红联作者:xtnu
[i=s] 本帖最后由 xtnu 于 2009-5-13 18:42 编辑 [/i]

有一张文件清单,里面的列出的文件是一个ISO里面的一个文件夹里的一部分文件(几百个),文件名不完全,但已经可以确定唯一性。我想把这些文件从ISO里复制出来,如何操作?
文章评论

共有 21 条评论

  1. limashow 于 2009-06-13 12:11:44发表:

    要用shell脚本...............

  2. luojy 于 2009-06-12 16:51:25发表:

    10# xtnu

    if 和[ 中间有空格
    if [ ! $? -eq 0 ];then

  3. 相思爱文 于 2009-05-13 19:28:35发表:

    引用:
    附脚本:
    ISO=/home/aaa/1/
    Dest=/home/aaa/2/

    我不懂脚本,但通常环境变量不加最后的/的,有知是否这样。

  4. xtnu 于 2009-05-13 18:42:03发表:

    用vim+tr编辑排版好了,前面和后面加操作命令是一个办法。

  5. lushanchen 于 2009-05-13 14:09:59发表:

    {:2_91:}
    .....看不明白..

  6. xtnu 于 2009-05-13 12:31:07发表:

    先不管这问题了,还是要谢谢版主

  7. deepwhite 于 2009-05-13 12:20:33发表:

    文本编辑的话,建议自己去学学VI的全局替换,或者用sed去做。

  8. deepwhite 于 2009-05-13 12:15:44发表:

    建议你去找一个更懂的人去亲自帮你弄弄。
    这个脚本在我这里跑,没问题。
    那个包我从网站上下载解压运行也没有问题。

  9. xtnu 于 2009-05-13 10:39:43发表:

    [i=s] 本帖最后由 xtnu 于 2009-5-13 10:45 编辑 [/i]

    现在又有一个问题,怎么在清单里每一行的后面紧跟着加个*
    然后再连接行。实在没办法了我想这样:编辑清单,在前面加:cd /a(列表中文件所在路径) && cp 1* 2* 3* 4* (目的路径),给清单加上执行权限,这样应该能行得通,就是麻烦啊(5ty(

  10. xtnu 于 2009-05-13 10:37:53发表:

    楼上的包好象已损坏。。。。。

  11. deepwhite 于 2009-05-13 09:00:59发表:

    10# xtnu
    不应该呀,我试了两台机器都没有问题的。
    下面的图是执行这个脚本的情况,附件是一个脚本,你直接用这个脚本试试(注意修改其中的路径)
    [attach]14204[/attach]
    [attach]14205[/attach]

  12. 微宝贝 于 2009-05-13 00:17:59发表:

    引用:
    终于有能人出来了,但是有点小问题
    终端提示错误:
    ./ts.sh: line 14: syntax error near unexpected token `then'
    ./ts.sh: line 14: `    if [ ! $? -eq 0 ]; then'

    附脚本:
    ISO=/home/aaa/1/
    D ...
    xtnu 发表于 2009-5-12 17:09

    研究中

  13. xtnu 于 2009-05-13 00:17:05发表:

    [i=s] 本帖最后由 xtnu 于 2009-5-13 00:19 编辑 [/i]

    [aaa@localhost ~]$ sudo cat /etc/passwd|grep 'aaa'
    aaa:x:500:500:bbb:/home/aaa:/bin/bash
    :0wszxc

    [aaa@localhost ~]$ bash ts.sh
    ts.sh: line 14: syntax error near unexpected token `then'
    ts.sh: line 14: `    if [ ! $? -eq 0 ]; then'

  14. hantu 于 2009-05-13 00:07:14发表:

    楼主用的是不是bash?

  15. yiday 于 2009-05-12 23:10:42发表:

    对版主的回复我要好好研究研究

  16. deepwhite 于 2009-05-12 22:43:00发表:

    应该没有问题,我这里试过。
    如果你那里出现问题的话应该是Shell不一样,建议使用Bash执行:
    bash ts.sh

  17. rupeijun74 于 2009-05-12 17:12:57发表:

    看不懂啊{:2_94:}

  18. xtnu 于 2009-05-12 17:09:43发表:

    终于有能人出来了,但是有点小问题
    终端提示错误:
    ./ts.sh: line 14: syntax error near unexpected token `then'
    ./ts.sh: line 14: `    if [ ! $? -eq 0 ]; then'

    附脚本:
    ISO=/home/aaa/1/
    Dest=/home/aaa/2/

    for name in $(cat 3); do
        cp $ISO/$name $Dest/$name
        if [ ! $? -eq 0 ]; then
            echo "Error when copying files."
            break
            exit 1;
        fi
        echo "Finished Copying "$name
    done
    echo "Copying Finished"

  19. deepwhite 于 2009-05-12 16:27:00发表:

    [code]#! /bin/sh
    # NOTE:将下面脚本中的SOURCE_DIR换成要拷贝的文件所在目录,将DEST_DIR换成拷贝的
    # 目标路径(路径均为完整路径),将logfile更改为记录待拷贝文件的文件。
    # 然后将该脚本放到logfile所在的目录,进入该目录并执行该改文件即可。注意权限,注
    # 意ISO需要挂载。
    # 如果提示:./test.sh: /bin/sh^M: bad interpreter: No such file or directory,
    # 则用dos2unix将脚本转换一下:dos2unix test.sh即可

    ISO=SOURCE_DIR
    Dest=DEST_DIR

    for name in $(cat logfile); do
    cp $ISO/$name $Dest/$name
    if [ ! $? -eq 0 ]; then
    echo "Error when copying files."
    break
    exit 1;
    fi
    echo "Finished Copying "$name
    done
    echo "Copying Finished"
    [/code]将其存为test.sh,修改权限,按照代码中的说明稍加修改后直接执行即可。

  20. xtnu 于 2009-05-12 15:44:57发表:

    几百个,一个个点?

  21. Mqqlecyro 于 2009-05-12 15:23:48发表:

    直接复制