linux自动删除指定文件。

linux下在一个文件夹中。除了指定的几个文件,把其他文件全删除。编的一个脚本有点问题。清帮忙debug一下多谢哦俄#!/bin/basha=$PWDj=1ls$a>li... linux下在一个文件夹中。除了指定的几个文件,把其他文件全删除。编的一个脚本有点问题。清帮忙debug一下多谢哦俄

#!/bin/bash
a=$PWD
j=1
ls $a > list
while [[ "$j" -le "$#" ]]
do
cat list | grep -v $i > listgrow
cp listgrow list
rm -f listgrow
j=$[$j+1]
done
awk '{print "rm ",$i}' list | sh
rm -f list
展开
 我来答
醉酒大哥
2012-12-13 · 超过18用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:52.6万
展开全部
楼主方法非最佳,既然保留几个指定文件。为何不把他们cp到一个指定目录/tmp,然后直接把当前目录中文件全部删除,再把文件从/tmp中cp回来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-11
展开全部
如果是目录怎么办?
如果你的循环遍历到的是文件夹,rm -R 删除吧.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5311d79
2012-12-11 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3206万
展开全部
1) -le 是用于数值的比较,所以该操作符两边的变量不需要加双引号,否则变为字符串的比较了。
while [[ "$j" -le "$#" ]] 改为 while [ $j -le $# ]

2) i 这个变量之前没有赋值过啊
cat list | grep -v $i > listgrow
awk '{print "rm ",$i}' list | sh

3) j=$[$j+1]
shell里怎么可以这么做计算呢?改为:
let j+=1 或者 let j=j+1 或者 j=`expr $j + 1`

你再看看,肯定还有问题,先改一版再说。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式