shell 如何用if判断文件修改时间是否超过24小时

[复制链接]
查看11 | 回复2 | 2021-1-27 06:25:47 | 显示全部楼层 |阅读模式
shell中有如下代码,红线部分为找到${C_AP_ENV_PRE_SEND_DIR}目录下创建时间超过24小时的${TMP_SEND_FILE_NAME}文件并删除
find${C_AP_ENV_PRE_SEND_DIR}-name${TMP_SEND_FILE_NAME}-mtime+0-execrm-rf{}\;
if[[$?-ne0]]
then
Apcom_Syslog_Msg"${SCRIPT_NAME}""${BATCH_ID}""${C_AP_MID_FILE_DEL_ERR}""${C_AP_ENV_PRE_SEND_DIR}/${TMP_SEND_FILE_NAME}"
fi
我现在想改成
if[[${TMP_SEND_FILE_NAME}创建时间超过24小时]]
then
rm-f${TMP_SEND_FILE_NAME}
if[[$?-ne0]]
then
Apcom_Syslog_Msg"${SCRIPT_NAME}""${BATCH_ID}""${C_AP_MID_FILE_DEL_ERR}""${C_AP_ENV_PRE_SEND_DIR}/${TMP_SEND_FILE_NAME}"
fi
fi
请问if语句应该怎么写
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:25:47 | 显示全部楼层
在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。
  与文件相关的几个时间:
  1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。
  2、修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls-l列出的时间就是这个时间。
  3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令文件名。
所以先确定判断的时间依据没有错误,你确定判断24小时以前修改的文件是-mtime+0,而不是-mtime1吗,验证一下吧

find${C_AP_ENV_PRE_SEND_DIR}-name${TMP_SEND_FILE_NAME}-mtime+0>tmp.txt
if[-stmp.txt]
then
cattmp.txt|whilereadline
do
rm-f$line
if[[$?-ne0]]
then
Apcom_Syslog_Msg"${SCRIPT_NAME}""${BATCH_ID}""${C_AP_MID_FILE_DEL_ERR}""${C_AP_ENV_PRE_SEND_DIR}/${TMP_SEND_FILE_NAME}"
fi
done
rm-ftmp.txt
fi


回复

使用道具 举报

千问 | 2021-1-27 06:25:47 | 显示全部楼层
笨办法:
创建文件的时候文件名带上时间
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行