【发布时间】:2012-09-11 16:12:06
【问题描述】:
我想删除文件夹中的多余文件。类似的东西
cat_1.jpg
cat_2.jpg
cat_3.jpg
dog_10.jpg
dog_100.jpg
减少到
cat_3.jpg
dog_100.jpg
即只取每个文件的版本号后缀最高的,其余的删除。
这很像
list the files with minimum sequence
但是那里的 bash 答案有一个“for ... in ...”。我有数千个文件名。
编辑:
文件名约定错误。可能还有其他下划线(例如 cat_and_dog_100.jpg)。我需要它只取最后一个下划线之后的数字。
【问题讨论】:
-
我会使用 Perl 脚本,避开
bash。可以改用 Python 或 Ruby。需要注意确保删除fish_90.jpg并保留fish_103.jpg。 -
以后,请考虑使用适当的版本控制软件,而不是编号的文件名。
-
文件名是否可预测,即总是
<name>_<numbers>.jpg? -
这些文件名不是我制作的。他们来自制作网站的副本。是的,它们是可预测的:名称和数字之间只有一个下划线,其他任何地方都没有。
标签: bash