将图像从一组文本文件复制到子目录中

时间:2012-07-31 01:07:54

标签: shell cygwin file-manipulation

我有一个包含大约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中,有一个文件列表需要来自/纹理/不对称/不对称/或/纹理/不对称/不对称+纹理/进/纹理/不对称/ 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

现在这确实有效,但是它会产生很多错误,因为有些文件夹确实有图像子文件夹而有些文件没有等等。但我完全可以接受这一点。更大的问题是程序会在一段时间后放弃,也许是在复制了大约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)这个问题的一般解决方案可以在很少的监督下工作。

0 个答案:

没有答案