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

xargs 和 cp 组合使用问题请教

  •  
  •   frozenshadow · 2016-01-21 11:45:58 +08:00 · 4099 次点击
    这是一个创建于 3258 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目录结构如下:

    ./a/a1.f
    ___/a2.f
    ___/a3.f ...
    ./b/b1.f
    ___/b2.f
    ___/b3.f ...
    ./c/c1.f
    ___/c2.f
    ___/c3.f ...
    ./all/

    我想将 ./a ./b ./c 目录中的所有文件都拷贝到 ./all 中(只要文件,不要目录),用命令如下:

    ls |xargs -n1 -i sudo cp ./{}/* ./dbs/

    然后 cp 就报错:

    cp :无法获取“./a/*”的文件状态( stat ):没有那个文件或目录

    cp 把 "./a/*" 当作一个文件了????

    ps. ./{}/*.*也不行

    7 条回复    2016-01-21 17:38:40 +08:00
    ryd994
        1
    ryd994  
       2016-01-21 11:50:03 +08:00   ❤️ 1
    *补全是 bash 的功能
    其实你可以 cp {a,b,c}/* ./all/
    不需要 xargs
    oska874
        2
    oska874  
       2016-01-21 11:50:32 +08:00   ❤️ 1
    find . -name "*.f" | xargs -i sudo cp {} ./all
    kit393
        3
    kit393  
       2016-01-21 12:09:08 +08:00   ❤️ 1
    各种姿势

    find ./{a,b,c}/ -type f -exec mv -vi {} ./all \;

    cp -vip {a,b,c}/* all/

    find ./{a,b,c}/ -type f | xargs -I{} cp {} ./all \;
    julyclyde
        4
    julyclyde  
       2016-01-21 12:41:58 +08:00   ❤️ 1
    另外,那个目录里如果有“点”开头的文件,*是不会匹配的
    你会少复制一些
    zhujinliang
        5
    zhujinliang  
       2016-01-21 12:43:33 +08:00 via iPhone
    看成了 xargs 的 cp 组合。。。
    yorath
        6
    yorath  
       2016-01-21 12:52:13 +08:00   ❤️ 1
    zsh only
    ```
    mv **/*.f all
    ```
    402124773
        7
    402124773  
       2016-01-21 17:38:40 +08:00
    for n in `... `;do ...;done
    有时候比 xargs 好用点,哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:12 · PVG 07:12 · LAX 15:12 · JFK 18:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.