我有一个包含大约 100 个子文件夹的文件夹。在每个子文件夹中,有 4 个文本文件和 1 个或 2 个包含图像的文件夹以及与 4 个文本文件对应的 4 个当前空文件夹。在每个文本文件中,都有一个需要从图像文件夹移动到特定文件夹的图像列表。
这是一个插图:
/Textures/Asymmetrical/ contains
/Asymmetrical/
/Asymmetrical+Texture/
/1/ /2/ /3/ /4/
/1.txt /2.txt /3.txt /4.txt
在 1.txt 中,有一个文件列表需要从 /Textures/Asymmetrical/Asymmetrical/ 或 /Textures/Asymmetrical/Asymmetrical+Texture/ 进入 /Textures/Asymmetrical/1/ 等等。
但并非所有文件夹都采用这种精确格式——下面还有另一种类型:
/Textures/Zigzagged/ contains
/images/
/1/ /2/ /3/ /4/
/1.txt /2.txt /3.txt /4.txt
这些文件/文件夹的目的应该从上面开始,除了这更容易使用,因为它只有 1 个图像文件夹。
现在我在shell中编写了以下代码:
filename='1.txt' #I was going to do the text files one at a time..
#Hidden: I set the value of filename2 to another text file.
while read f;
do
while read g;
do
cp ./$f""/images/$g $f""/2_Good/
cp ./$f""/$f/$g $f""/2_Good/
cp ./$f""/$f""+texture/$g $f""/2_Good/
done < $f""/$filename
done < $filename2
现在这确实有效,但会产生很多错误,因为有些文件夹确实有 images 子文件夹,而另一些则没有,依此类推。但我完全可以忍受。更大的问题是程序会在一段时间后放弃,可能是在复制了大约 40-200 张图像之后。我有数以万计的图像要移动,所以我不会费心去复制这种大小的块。我收到如下错误:
8 [main] -bash 5796 fork:child -1 - forked process 5764 died unexpectedly, retry 0, exit code -1073741819, errno 11
./moveAround.sh: fork: retry: Resource temporarily unavailable
./moveAround.sh: fork: Resource temporarily unavailable
所以我想我要求要么 1)修复我的代码,要么 2)这个问题的通用解决方案,可以在很少的监督下工作。