代码之家  ›  专栏  ›  技术社区  ›  Joel

如何在目录中复制多个文件并将每个文件移动到正确的目录中

  •  1
  • Joel  · 技术社区  · 8 年前

    Unix shell ksh

    我创建了一个文件列表,目前正在尝试将每个文件复制到正确的路径。

    (mylist)
    -1111
    -2222
    -3333
    -4444
    -5555
    

    当前目录

    -1111fileneeded.txt
    -2222fileneeded.txt
    -3333fileneeded.txt
    -4444fileneeded.txt
    -5555fileneeded.txt
    -6666dontneed.txt
    -7777dontneed.txt
    -8888dontneed.txt
    ...etc
    

    每个文件的前4个字符与它们需要到达的正确路径相匹配。

    /sample/dir/1111/
    /sample/dir/2222/
    /sample/dir/3333/
    /sample/dir/4444/
    

    这就是我目前拥有的。。

    for i in `cat mylist`
    do echo "$i"
     find /sample/dir/unknown/mylist* 
    

    1 回复  |  直到 8 年前
        1
  •  0
  •   Will    8 年前

    #!/bin/ksh
    while IFS=\| read -r line; do
       dir=`echo $line | cut -c 2-5`
       mv "$line /sample/$dir/$line"
    done > filelist.txt
    

    IFS 是escape特殊字符,以防万一。

    cut -c 2-5 从2到5取所有字符(因为文件名的开头有一个破折号)