请问如何用Shell编: 在当前目录下保留指定日期的文件,其余的全部删除?

jackxiang 2013-9-17 13:09 | |

作者:作者
来自:无名

#!/bin/sh
ls -1 |while read line
do
month=`echo $line|awk '{print $6}'`
day=`echo $line|awk '{print $7}'
time=echo $line|awk '{print $8}'
file=`echo $linr|awk '{print $9}'
if [ $month="RIGHTMONTH" -a $day="RIGHTDAY" -a $time="RIGHTTIME"
then
continue
else
rm $filr
fi
done

RIGHTMON RIGHTDAY RIGHTTIME为你制定的时间.
rm


多谢!
但有个问题:
if [ $month="Jul" -a $day="29"]
.....
好像不太对,运行完了好像没有正确判断,什么文件也没删除!


如果echo $LANG = zh
则$month是中文.

不是,是英文,我用ksh -x 来执行,发现一行如: [May=Jul -a 9=29] 它还是继续执行continue的内容,不是执行else

if [ $month="Jul" -a $day="29"]改为
if [ $month="Jul" -a $day="29" ]试试看

成功!
if [ "$month" = "Jul" -a "$day = "29" ]


对,shell编程中的() ,[] , {} 前后最好都要空格。
来自:http://www.phpchina.com/download/handbook/linux-html/406.html

参考
http://www.phpchina.com/download/handbook/linux-html/406.html
Khairi Wang- SNG(66237759)  下午 12:54:37
ll | awk '{if($6~/01$/){print $8}}' | xargs rm
如果文件不是很多 这个命令可以
$6 文件日期
$8 文件名
Jack-回忆未来(372647693)  下午 12:55:26
好像文件多了,要用另外一个命令,我有次写crontab就遇到文件多用rm好像不行。
Khairi Wang- SNG(66237759)  下午 12:56:22
文件多了 得用find -exec

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/6664/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]