首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
华为云
V2EX  ›  Linux

[linux] 如何批量复制文件名中有$符号的文件

  •  1
     
  •   Martin9 · 2016-05-11 17:02:17 +08:00 · 3170 次点击
    这是一个创建于 924 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个 file_list 文件,里面写了需要复制的文件名, 使用 while read line 会自动忽略$符号, 求助下各位,谢谢

    第 1 条附言  ·  2016-05-11 20:37:27 +08:00
    谢谢大家的帮忙,已送铜币表示感谢, 5 楼是我想要的答案
    第 2 条附言  ·  2016-05-12 09:03:58 +08:00
    诸位,不好意思又来求助大家。
    按照 5 楼的方法能在本地成功。
    然而因为 file_list 文件和需要复制的文件不在一个服务器上,所以 ssh 到文件所在的服务器上时, file_list 文件名中由于有$符号导致不能正确传输,
    请问有方法能解决么?
    第 3 条附言  ·  2016-05-12 09:12:23 +08:00


    代码如上,客户名和服务器名手动打码,应该没有影响
    11 回复  |  直到 2016-05-11 20:35:46 +08:00
        1
    fish47   2016-05-11 17:10:04 +08:00   ♥ 1
    用 xargs -d SEP 不就好了?再不行就用 python 呗。
        2
    dixyes   2016-05-11 17:12:34 +08:00 via Android   ♥ 1
    木有转义?\$之类的?
        3
    Martin9   2016-05-11 17:15:09 +08:00
    @fish47 不能用 python,只能用 shell
        4
    Martin9   2016-05-11 17:16:29 +08:00
    @dixyes read line 的时候$line 这个变量读文件名的时候会忽略$,
        6
    McContax   2016-05-11 17:38:15 +08:00 via Android
    shell 脚本即可
        7
    ilotuo   2016-05-11 19:03:18 +08:00   ♥ 1
    试下单引号
    其内部所有的 shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
        8
    ilotuo   2016-05-11 19:04:04 +08:00
    ^_^[18:35:48]develop$ touch '$tetst'
    ^_^[19:06:27]develop$ ls '$tetst'
    $tetst
    ^_^[19:06:34]develop$ rm '$tetst'
        9
    cxbig   2016-05-11 19:54:47 +08:00   ♥ 1
    转义\$

    整个文件名加引号
        10
    Martin9   2016-05-11 20:34:49 +08:00
    @SpicyCat 多谢
        11
    Martin9   2016-05-11 20:35:46 +08:00
    @cxbig 想批量做, 5 楼这样的
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1749 人在线   最高记录 3911   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 25ms · UTC 16:21 · PVG 00:21 · LAX 08:21 · JFK 11:21
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1