代码之家  ›  专栏  ›  技术社区  ›  Felix Ogg

Unix中具有类似文件名的重复文件

  •  2
  • Felix Ogg  · 技术社区  · 16 年前

    我在一个目录中有一组文件,名为:

    OneThing-x.extension
    OneThing-y.extension
    OneThing-z.extension
    

    什么unix命令(find、cp、xargs、sed?)我要把这些复制到

    AnotherThing-x.extension
    AnotherThing-y.extension
    AnotherThing-z.extension
    

    这样x->复制->x和y->复制->y

    我找到了……要启动的命令的一部分,它选择文件,但我被困在那里。

    编辑 显然,我想保留原件和副本,所以重命名对我来说并不是什么好办法。

    5 回复  |  直到 16 年前
        1
  •  3
  •   Stephen Darlington    16 年前

    怎么样:

    $ touch a1.a a2.a a3.a
    $ ls
    
    a1.a  a2.a  a3.a
    
    $ for a in a*.a ; do cp $a $(echo $a | sed 's/^a/b/') ; done
    $ ls
    
    a1.a  a2.a  a3.a  b1.a  b2.a  b3.a
    
        2
  •  1
  •   Community Mohan Dere    9 年前

    延伸 Jason Musgrove's solution :

    for FIL in OneThing*
    do
      NFIL=`echo $FIL | sed 's/OneThing/AnotherThing/'`
      cp "$FIL" "$NFIL"
    done
    
        3
  •  1
  •   Jason Musgrove    16 年前

    我的大致解决方案是:

    for FIL in OneThing*; do NFIL=`echo $FIL|sed 's/OneThing/AnotherThing/'`; cp "$FIL" "$NFIL"; done;
    
        4
  •  0
  •   jcadam    16 年前
    $ rename 's/OneThing/AnotherThing/' *.extension
    
        5
  •  0
  •   Mark van Lent    16 年前

    您也可以使用mmv:

    $ mmv -c "OneThing*" "AnotherThing#1"
    

    $ mmv -c "OneThing-*.extension" "AnotherThing-#1.extension"