【问题标题】:delete the older file with the same name but different extension [duplicate]删除具有相同名称但扩展名不同的旧文件[重复]
【发布时间】:2021-11-15 13:12:48
【问题描述】:

我在 Linux 中有很多这样的文件:

File1.ext
File1.EXT
File2.ext
File2.EXT
.
.
.

我需要删除 File1.ext 和 File1.EXT、File2.ext 和 File2.EXT 等之间的旧文件。 我可以在 Linux 上执行此操作吗?

【问题讨论】:

    标签: bash centos


    【解决方案1】:

    我们可以使用stat 命令获取文件最后修改的纪元时间戳,并用它来删除旧文件。

    然后,我们可以将 shell 中的这些时间戳与-gt 进行比较,以删除相应的文件。

    #!/bin/sh -e
    
    for f in *.ext; do
        # f = File1.ext
        base="$(basename "$f" .ext)" # File1
        last_modified="$(stat -c '%Y' "$f")"
        last_modified_next="$(stat -c '%Y' "${base}.EXT")"
    
        if [ "$last_modified" -gt "$last_modified_next" ]; then
            rm -f "$base.EXT"
        elif [ "$last_modified" -lt "$last_modified_next" ]; then
            rm -f "$f"
        fi
    done
    

    【讨论】:

    • 您好,在文件夹中,我有一些名称相同但扩展名不同的文件,但也有只有一个扩展名的文件,所以我收到脚本错误,因为它没有找到比较日期的文件,我该如何避免这种情况?提前谢谢你
    • 您可以在base=... 下方和last_modified=... 之前添加这样的逻辑。 [ -f "${base}.EXT" ] || continue 如果不存在扩展名为 EXT 的对应文件,则忽略当前文件。
    猜你喜欢
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多