加速unix中的硬链接创建

时间:2017-08-30 04:17:17

标签: bash shell csv unix hardlink

我有一项工作要为具有不同名称的60000+(30.3 GB)文件制作新的硬链接。问题是,目录,旧文件名和新的硬链接名称存储在CSV文件中。现在,我正在编写一个自动执行的脚本(解析csv,循环记录,并建立链接)。以下是剧本中的预告

while read col1 col2 col3 col4
do
        if [ $counter -ne 0 ];
        then
                if [ ! -f "$col2$col3.jpg" ]; then
                        # File not found, need to track how much is not found
                        echo "$col2$col3.jpg"
                        notfound=$(expr $notfound + 1)
                else
                        if [ $(expr $hash / 10) -eq 1 ]; then
                                hash=$(expr $hash - 10)
                        fi

                        ln "$col2$col3.jpg" ./testtemp-1/$hash/$col4.jpg
                        hash=$(expr $hash + 1)
                fi
        else
                counter=$(expr $counter + 1)
        fi
done < test.csv

完成这件事需要大约15分钟。我是否知道是否有任何缩短时间的想法?这是一项非常时间敏感的任务,将在生产中完成(现在正在进行测试)。

PS:我需要散列,因此无法删除。找不到也是必需的。 $ col2 - &gt;目录名称,$ col3 - &gt;文件名,$ col4 - &gt;新的硬链接名称

1 个答案:

答案 0 :(得分:0)

我设法通过更改expr并跳过第一行检查逻辑将时间减少到非常合理的时间(2分钟)。感谢您的评论:)