You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查目录中是否存在与Excel文件修改日期相同的XML文件

找出与目标Excel文件修改日期一致的XML文件

我来帮你解决这个问题——找出目录中与指定Excel文件修改日期完全一致的XML文件。下面是几种可靠的实现方式,适配类Unix系统(Linux/macOS):

方法一:基于Unix时间戳的精准匹配(推荐)

这种方法通过文件的Unix时间戳(从1970年1月1日到修改时间的秒数)来对比,完全避免了字符串格式歧义的问题(比如ls输出在文件超过6个月时会显示年份而非具体时间)。

  1. 先定义目标Excel文件,并提取它的修改时间戳:
# 替换成你的目标Excel文件路径
EXCEL_FILE="sample_excel.xls"
# 获取Excel文件的修改时间戳(Linux系统用stat -c %Y)
EXCEL_MTIME=$(stat -c %Y "$EXCEL_FILE")
  1. 用find命令筛选出修改时间戳匹配的XML文件:
# 查找当前目录下所有XML文件,且修改时间戳与Excel一致
find . -maxdepth 1 -type f -name "*.xml" -exec sh -c 'if [ $(stat -c %Y "$1") -eq '$EXCEL_MTIME' ]; then echo "$1"; fi' _ {} \;

针对你给出的示例目录,执行后会输出:./sample1.xml

适配macOS系统

macOS的stat命令参数与Linux不同,需要调整为:

# macOS下获取Excel修改时间戳
EXCEL_MTIME=$(stat -f %m "$EXCEL_FILE")
# 查找匹配的XML文件
find . -maxdepth 1 -type f -name "*.xml" -exec sh -c 'if [ $(stat -f %m "$1") -eq '$EXCEL_MTIME' ]; then echo "$1"; fi' _ {} \;

方法二:基于ls输出的字符串匹配(快速验证,不推荐长期使用)

如果你只是临时验证,且确定所有文件的修改时间都在最近6个月内(ls会显示月、日、时分),可以用这种方式:

EXCEL_FILE="sample_excel.xls"
# 提取Excel文件的ls日期字符串(格式如:Apr 11 20:18)
EXCEL_DATE=$(ls -l "$EXCEL_FILE" | awk '{print $6, $7, $8}')

# 遍历所有XML文件,对比日期字符串
for xml_file in *.xml; do
    XML_DATE=$(ls -l "$xml_file" | awk '{print $6, $7, $8}')
    if [ "$XML_DATE" = "$EXCEL_DATE" ]; then
        echo "匹配的XML文件:$xml_file"
    fi
done

⚠️ 注意:这种方法的局限性很明显——如果文件修改时间超过6个月,ls会将时分替换为年份(格式如:Apr 11 2023),这时候字符串对比就会失效,所以优先推荐方法一。

内容的提问来源于stack exchange,提问作者user2058738

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:21:47