如何复制目录中的多个文件并将每个文件移动到正确的目录中
How to copy multiple files in directory and move each into their correct directory
Unix shell ksh
我创建了一个文件列表,目前正在尝试将每个文件复制到它们的正确路径。
(mylist)
-1111
-2222
-3333
-4444
-5555
当前目录
/sample/dir/unknown/
-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*
这是我有点卡住的地方,我试图弄清楚需要做什么才能将每个文件移动到正确的目录中。
这应该有效
#!/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(因为文件名开头有破折号)
如果还有不明白的地方,请告诉我。
Unix shell ksh
我创建了一个文件列表,目前正在尝试将每个文件复制到它们的正确路径。
(mylist)
-1111
-2222
-3333
-4444
-5555
当前目录 /sample/dir/unknown/
-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*
这是我有点卡住的地方,我试图弄清楚需要做什么才能将每个文件移动到正确的目录中。
这应该有效
#!/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(因为文件名开头有破折号)
如果还有不明白的地方,请告诉我。