0

我有一个包含大约 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)这个问题的通用解决方案,可以在很少的监督下工作。

4

0 回答 0