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

魔术 2015-01-29 05:10:26
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 -exec rm -rf {} \;
if [[ $? -ne 0 ]]
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 [[ $? -ne 0 ]]
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语句应该怎么写
...全文
855 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
奔跑的路 2015-01-30
  • 打赏
  • 举报
回复
在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。   与文件相关的几个时间:   1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。   2、修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。   3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令 文件名。 所以先确定判断的时间依据没有错误,你确定判断24小时以前修改的文件是 -mtime +0 ,而不是-mtime 1 吗,验证一下吧

find ${C_AP_ENV_PRE_SEND_DIR} -name ${TMP_SEND_FILE_NAME} -mtime +0 > tmp.txt
if [ -s tmp.txt  ]
then
      cat tmp.txt | while read line
      do
      rm -f $line
      if [[ $? -ne 0 ]]
      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 -f tmp.txt
fi
空的 2015-01-30
  • 打赏
  • 举报
回复
笨办法: 创建文件的时候文件名带上时间

23,215

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧