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

时间:2017-09-21 14:09:05

标签: path directory find copy cat

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 个答案:

答案 0 :(得分:0)

这应该有效

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

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

cut -c 2-5将所有字​​符从2到5(因为文件名的开头有一个短划线)

如果还有其他事情你不明白,请告诉我。