删除具有相同名称但扩展名不同的旧文件
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
我在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