删除具有相同名称但扩展名不同的旧文件

delete the older file with the same name but different extension

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

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

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

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

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

#!/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