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*
这就是我陷入困境并试图弄清楚需要做些什么才能将每个文件移动到正确的目录中。
答案 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(因为文件名的开头有一个短划线)
如果还有其他事情你不明白,请告诉我。