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

Linux 命令操作

  •  1
     
  •   xinali 2017-04-25 14:07:01 +08:00 4321 次点击
    这是一个创建于 3179 天前的主题,其中的信息可能已经有所发展或是发生改变。

    linux 下有办法将前一个命令的结果作为第二个命令的第一个参数吗?具体举例如下

    ls | mv {第一个命令的结果} some_dir/ 
    第 1 条附言    2017-04-25 14:43:00 +08:00

    目前根据回答可以总结如下 4 种方法:

    1. ls | xargs -i mv {} dst_dir/ (使用 xargs 的-i 参数)
    2. mv `ls` dst_dir/
    3. mv $(ls) dst_dir/
    4. e=`ls` => mv ${e} dst_dir/

    有别的方法也欢迎补充

    25 条回复    2017-04-26 16:16:32 +08:00
    xinali
        1
    xinali  
    OP
       2017-04-25 14:10:10 +08:00
    不小心重复创建了,不好意思
    Tink
        2
    Tink  
    PRO
       2017-04-25 14:12:12 +08:00   1
    eg:

    mv `ls` ..
    pank
        4
    pank  
       2017-04-25 14:13:47 +08:00
    xargs?
    we3613040
        5
    we3613040  
       2017-04-25 14:17:26 +08:00
    xargs
    nightcat
        6
    nightcat  
       2017-04-25 14:18:05 +08:00
    @scriptB0y 新技能 get
    xinali
        7
    xinali  
    OP
       2017-04-25 14:19:27 +08:00
    @scriptB0y 能够搜到结果,再发, OK ?
    xinali
        8
    xinali  
    OP
       2017-04-25 14:24:27 +08:00
    @Tink 这个可以实现我的需求,非常感谢,有一点前提是前一个命令中不含有``
    Tink
        9
    Tink  
    PRO
       2017-04-25 14:26:31 +08:00
    @xinali #9 也可以有,转义一下
    xia0pia0
        10
    xia0pia0  
       2017-04-25 14:30:01 +08:00
    xargs - build and execute command lines from standard input
    bukip
        11
    bukip  
       2017-04-25 14:31:05 +08:00
    |
    sammo
        12
    sammo  
       2017-04-25 14:33:29 +08:00   2
    mv $(ls ...)
    `` 和 $() 同样效果
    wizardoz
        13
    wizardoz  
       2017-04-25 14:33:34 +08:00   1
    | 操作符是把上一个程序的输出作为下一个程序的输入,和楼主理解的参数不是一回事。

    e=`ls`
    mv ${e} /dst-dir/
    这是作为参数
    xinali
        14
    xinali  
    OP
       2017-04-25 14:40:44 +08:00
    目前根据回答可以总结如下 4 种方法:
    1. ls | xargs -i mv {} some_dir/ (使用 xargs 的-i 参数)
    2. mv `ls` some_dir/
    3. mv $(ls) some_dir/
    4. e=`ls` => mv ${e} some_dir/
    有别的方法也欢迎补充
    EthanLiao
        15
    EthanLiao  
       2017-04-25 14:49:56 +08:00
    mkdir ~/test
    cd ~/test
    touch a
    touch b
    mkdir ~/test1
    ls | xargs -n1 -I {} cp -a {} ~/test1
    cd ~/test1
    ls
    xj998
        16
    xj998  
       2017-04-25 14:57:04 +08:00 via Android
    搭楼求解一下
    一般我们排序 hosts 文件
    sort hosts.txt
    是从左到右字符逐渐排序,那么

    比如这个 cat hosts.txt
    127.0.0.1 p.kjwx8.com
    127.0.0.1 sta.jcjk0451.com
    127.0.0.1 1.yhzm.cc
    127.0.0.1 www.hao934.com
    127.0.0.1 www.1680go.com
    127.0.0.1 pc.quansj.cn
    127.0.0.1 ad.xxguan.cn
    127.0.0.1 pic.517m.cn
    127.0.0.1 eee.ttyy888.co
    127.0.0.1 www.716703.com
    127.0.0.1 dp.559.cc
    127.0.0.1 info.yitsoftware.com
    127.0.0.1 ads.gionee.com
    127.0.0.1 pdl.gionee.com
    如何实现从最右边字符开始逐步往左字符排序?这个我看了很多教程,有个-k 参数,但没搞成功。求解!
    araraloren
        17
    araraloren  
       2017-04-25 15:22:17 +08:00   1
    @xj998 简单的很
    sort -k 2,1
    就行了
    lyao
        18
    lyao  
       2017-04-25 17:58:47 +08:00
    percol 是个好东西
    https://github.com/mooz/percol
    hljjhb
        19
    hljjhb  
       2017-04-25 18:39:06 +08:00
    ls | xargs m -t dst_dir/

    xargs 可以不用 -i
    xj998
        20
    xj998  
       2017-04-25 22:58:07 +08:00 via Android
    @araraloren 不行, sort -k 2,1 hosts 这个结果还是从左到右字符排序的。
    无法从倒过来排序。
    如何实现这个效果:
    127.0.0.1 dp.559.cc
    127.0.0.1 1.yhzm.cc
    127.0.0.1 sta.jcjk0451.com
    127.0.0.1 www.716703.com
    127.0.0.1 www.hao934.com
    127.0.0.1 p.kjwx8.com
    127.0.0.1 pdl.gionee.com
    127.0.0.1 ads.gionee.com
    127.0.0.1 info.yitsoftware.com
    127.0.0.1 www.1680go.com
    127.0.0.1 pc.quansj.cn
    127.0.0.1 ad.xxguan.cn
    127.0.0.1 pic.517m.cn
    127.0.0.1 eee.ttyy888.co
    yech1990
        21
    yech1990  
       2017-04-26 00:19:37 +08:00 via Android   1
    @xj998
    tac host | sort | tac
    araraloren
        22
    araraloren  
       2017-04-26 09:43:08 +08:00   1
    @xj998
    你的意思是整个字符串倒过来排序?? -k 是列的参数当然不行

    可以这么写: cat hosts | rev | sort | rev
    fuying
        23
    fuying  
       2017-04-26 10:02:59 +08:00
    find ./ -exec mv {} dist_dir \;
    xj998
        24
    xj998  
       2017-04-26 10:28:27 +08:00 via Android
    @araraloren 成功了。非常感谢你!!

    这几天我到处找 Linux 社区请教,却一直没能解决。还是 V2EX 牛人多啊!
    artandlol
        25
    artandlol  
       2017-04-26 16:16:32 +08:00
    @xj998 毕竟这里都是老司机
    我一般都是这么用的
    ls | xargs -i -P 30 rm -rf {} > /dev/null
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5508 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 06:35 PVG 14:35 LAX 22:35 JFK 01:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86