大侠,可否把代码贴出来参考下呢,谢谢
追答#获取当前日期时间的前一天并格式化为"年月日时分秒"格式
myTime=`date -d '1 day ago' "+%Y%m%d%k%M%S"`
#将 ls 的结果与之比较,输出大于等于该时间的所有文件名
ls | while read line
do
#使用的是整数表达式,这就要求你文件夹下的所有文件都以这种数字格式命名
[ "$line" -ge $myTime ] && echo “$line”
done
注意:如果你的shell不支持date的-d选项,那么只有用我上面说的字符串截取方法了。
我的文件名是这样的:asb_201103071317.jpg这样命名的,用你这种方法输出来的话,/root/test/video_old_24.sh: line 15: [: 02.jpg: integer expression expected会提示这个,怎么解决呢?太感谢您了,
追答那就先把文件名的日期部分取出来,再比较啊。
myTime=`date -d '1 day ago' "+%Y%m%d%k%M%S"`
ls | while read line
do
filedate=`awk 'BEGIN{FS="[_.]"}{print $2}'`
[ "$filedate" -ge $myTime ] && echo “$line”
done
嗯这个我解决了,我还想知道,那个$line 变量如何获取到while循环的外面??
追答用数组变量保存。
i=0
ls | while read line
do
filedate=`awk 'BEGIN{FS="[_.]"}{print $2}'`
[ "$filedate" -ge $myTime ] && filename[$i]=“$line”
i=`expr $i + 1`
done
while循环外面用的时候,用 ${filename[$i]} 来引用相应的数组变量值即可。
您方便留个联系方式吗??
追答百度hi客户端加xiehuahere,其他联系方式诸如手机、邮箱等就不方便在这里留啦~~见谅 ;-)