上次说过一次Linux/Git下对大量的文件分批操作
https://haoduck.com/389.html
这次对其进行一些扩展
无人值守式循环对GIT分批操作
下列操作都建议在Screen中进行
Screen可见https://haoduck.com/333.html
正文
首先要将GIT更改为git而非https的模式,否则会卡在输入邮箱和密码
这次的情况和我上次的有点不太一样
这次我需要操作的是几百个文件夹,但每个文件夹内的文件都不多,但文件也不算小
所以我的想法是每次push5个文件夹
所以在上次的脚本上稍微修改,再加一个循环即可
原脚本为
git add $(ls | grep -v / | head -n 100) git commit -m "push 100 个文件" git push origin master
依次
git add $(ls | grep -v / | head -n 200) git commit -m "push 100 个文件" git push origin master
git add $(ls | grep -v / | head -n 300) git commit -m "push 100 个文件" git push origin master
代表每次对100个文件进行操作
还有这是是进行了排除文件夹的操作的
#排除文件夹 git add $(ls | grep -v / | head -n 100) #不排除文件夹 git add $(ls | head -n 100)
那么修改为操作5个文件夹,我这边是没有其他文件,只有文件夹的,所以就没有别的操作了
git add $(ls | head -n 5)
加上commit和push
git add $(ls | head -n 5) git commit -m "对5个文件夹操作" git push origin master
第二批5个文件夹就是
git add $(ls | head -n 10) #依次第三批第四批 git add $(ls | head -n 15) git add $(ls | head -n 20)
很容易就发现了规律,数字每次+5
定义一个变量i,每次+5
i=5 git add $(ls | head -n $i) git commit -m "对5个文件夹操作" git push origin master i=i+5
加一个死循环
i=5 while true do git add $(ls | head -n $i) git commit -m "对5个文件夹操作" git push origin master i=$(expr $i + 5) echo "已操作"$i"个文件夹" #输出 done