需求:现在有一个A文件夹下存放着自动编译的output出来文件,每次自动化编译完成后,目标文件都会被复制该A文件夹下。
现在做一个脚本(后附):
自动测试A下一旦有超出20个目录,就会删除其它,但是现在遇到问题,在判断序号中用到的 i 并不是序号,但又搞了很久不知道怎么拿序号进行比较,再做出相应删除动作。对Linux操作不熟悉,请教!
ls -t -l|grep "^d"|while read i
do
if [ i -gt 20 ]; then
rm -rf $i
fi
done`
1
LeoQ 2015-06-04 14:37:14 +08:00 via Android
ls -l |wc -l 试试这个这个可以探测文件夹下面有多少个文件
|
2
lululau 2015-06-04 14:49:14 +08:00 1
ls -t | head -n -20 | xargs -I {} rm -rf "./{}"
|
3
sisyphus60 OP @lululau 我试试,这么简洁,貌似好强大
|
4
sisyphus60 OP @lululau 好奇怪啊,ls -t是按最新时间顺序打列的,但删除结果是是按最晚时间顺序保留的。。。
|
5
kamushin 2015-06-04 15:26:52 +08:00
@sisyphus60 head改成tail
|
6
lululau 2015-06-04 15:36:56 +08:00
@sisyphus60 没注意 ls -t 的排序,改成:
ls -t | tail -n +21 | xargs -I {} rm -rf "./{}" 或者: ls -tr | head -n -20 | xargs -I {} rm -rf "./{}" |
7
sisyphus60 OP @kamushin 这个会删除n个,不是保留n个了,我加了-r参数,这样时间与上面的倒过来了,正好满足了需求。同谢!
|
8
sisyphus60 OP @lululau 嗯嗯,我后面改了时间排序。对了,还得再请教个问题:
怎么列出过去24小时之外的所有文件啊、 |
9
lululau 2015-06-05 22:22:31 +08:00 via iPad
@sisyphus60 find -ctime
|