約 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/ などに移動する必要があるファイルのリストがあります。
ただし、すべてのフォルダがこの正確な形式であるわけではありません。以下に示す別のタイプが 1 つあります。
/Textures/Zigzagged/ contains
/images/
/1/ /2/ /3/ /4/
/1.txt /2.txt /3.txt /4.txt
これらのファイル/フォルダーの目的は上記のとおりですが、画像フォルダーが 1 つしかないため、操作が簡単です。
今、私はシェルで次のコードを書きました:
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) ほとんど監督しなくても機能するこの問題の一般的な解決策のいずれかを求めていると思います。