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

dojqjjoe  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(239)

此问题在此处已有答案

Looping over pairs of values in bash [duplicate](6个答案)
compare file's date bash(4个答案)
去年关闭了。
我在Linux中有很多这样的文件:

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

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

yshpjwxd

yshpjwxd1#

我们可以使用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

相关问题