2017-09-21 87 views
1

Unix外壳KSH如何将多个文件目录拷贝,并且每个进入他们的正确的目录

我创建了一个文件列表,我目前想每个文件复制到他们的正确路径。

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

当前目录 /样品/ DIR /未知/

-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* 

这就是我有点卡住,试图找出需要做让每一个文件移动到其正确的目录中的内容。

+0

你在使用什么平台和shell? –

+0

道歉,是的,我正在使用壳牌 – Joel

+0

/哪个/壳? bash,csh,tcsh,sh,...? –

回答

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(因为在你的文件名的开头破折号)

让我知道如果有别的东西,你不明白。

+0

非常感谢! – Joel

+0

如果我的回答有帮助,可以请你注意/接受它? – Will

+1

嗨,威尔,我接受了,但我无法赞成,因为我没有足够的代表来做到这一点。但非常感谢! – Joel

相关问题