在单个文件中合并多个文件不是unix中的问题。然而,我想将多个文件组合成更少的文件,并根据大小限制这些多个文件的形成。
以下是完整的解释: 1)有200个不同大小的文件,范围从1KB到2GB。 2)我希望随机组合多个文件,并创建多个5 GB的文件。 3)因此,如果每个文件有200个文件,范围从1KB到2GB,那么结果集可能是10个文件,每个5GB。
以下是我尝试制作的方法,但无法设计逻辑,需要一些帮助:
for i in ls /tempDir/``
do
if [[ -r $i ]]
then
for files in find /tempDir/ -size +2G``
cat $files > combinedFile.csv
fi
done
这将只创建一个文件combinedFile.csv
,无论大小如何。但我需要将combinedFile.csv
的大小限制为5GB并创建多个文件combinedFile_1.csv combinedFile_2.csv, etc
。
此外,我还想检查一下,当创建这些多个合并文件时,行不会在多个文件中被破坏。
任何想法如何实现它?
答案 0 :(得分:0)
我使用cat
管理了一个解决方法,然后使用以下代码拆分文件:
for files in `find ${dir}/ -size +0c -type f`
do
if [[ -r $files ]]
then
cat $files >> ${workingDirTemp}/${fileName}
else
echo "Corrupt Files"
exit 1
fi
done
cd ${workingDir}
split --line-bytes=${finalFileSize} ${fileName} --numeric-suffixes -e --additional-suffix=.csv ${unserInputFileName}_
cat
是针对10 + Gigs等大文件的CPU密集型操作。有没有人有任何可以减少CPU负载或提高处理速度的解决方案?