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 展开
#!/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 展开
3个回答
展开全部
楼主方法非最佳,既然保留几个指定文件。为何不把他们cp到一个指定目录/tmp,然后直接把当前目录中文件全部删除,再把文件从/tmp中cp回来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-12-11
展开全部
如果是目录怎么办?
如果你的循环遍历到的是文件夹,rm -R 删除吧.
如果你的循环遍历到的是文件夹,rm -R 删除吧.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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`
你再看看,肯定还有问题,先改一版再说。
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`
你再看看,肯定还有问题,先改一版再说。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询