【发布时间】:2021-11-15 13:12:48
【问题描述】:
我在 Linux 中有很多这样的文件:
File1.ext
File1.EXT
File2.ext
File2.EXT
.
.
.
我需要删除 File1.ext 和 File1.EXT、File2.ext 和 File2.EXT 等之间的旧文件。 我可以在 Linux 上执行此操作吗?
【问题讨论】:
我在 Linux 中有很多这样的文件:
File1.ext
File1.EXT
File2.ext
File2.EXT
.
.
.
我需要删除 File1.ext 和 File1.EXT、File2.ext 和 File2.EXT 等之间的旧文件。 我可以在 Linux 上执行此操作吗?
【问题讨论】:
我们可以使用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 的对应文件,则忽略当前文件。