一个实习生一半时间都在处理数据吧,一个mentor告诉我不行就写个python脚本,另一个mentor告诉我学学shell,不要啥都写脚本,代码可能也不复用。反正一切都是为了提高效率
图片下载下来之后就是分训练集和测试集
$ls images | wc -l
看看图片有多少张
$ls images | shuf -n 500000 |xargs -I {} mv images/{} images_test_50w
涉及到
shuf指令 管道指令 xargs指令 mv指令
然后自己算一下比例 shuf出来测试集的数量 mv到另一个文件夹里
接下来就是要对label文档做出相应的变换
但是在此之前要把文件名改一下
$ls images_test_50w | sed "s/\..*//;s/$/.txt/" > labels_test.txt
sed 有一个固定模式
首先需要一个字母代表功能
s代表替换功能
d代表删除功能
sed 的各个功能可以连用 之间使用 ;隔开
在确定了s(替换)功能之后,替换的固定模式为
s/{正则匹配}/{替换方法}
比如 \. 就是匹配分隔符.
. 就是匹配任意字符
*就是匹配无数次
\..*就是匹配以.开始之后的所有字符
s/\..*// 因为{替换方法}这一栏什么都没有写 所以作用类似于把.jpg .png删除
接下来
$匹配句尾
s/$/.txt/就是在句尾加上.txt
这样就得到了测试文档的文件名 只要mv就行了
$cat labels_test.txt | xargs -I {} mv {} labels_test