我有一堆文件,名字如下
file_1_v4_sdk.x
file_2_v1_3kl.x
file_3_v1_39f.x
file_3_v2_df0.x
file_4_v4_f33.x
file_4_v1_fks.x
file_4_v5_skd.x
file_5_v2_9ks.x
file_6_v4_911.x
file_7_v2_3jd.x
file_8_v1_9pc.x
file_8_v4_gpq.x
因此,有些文件有多个版本,但这些版本没有顺序。我想找到那些有多个版本的文件,只在目录中保留一个版本,而将其他版本移动到另一个目录中。我不知道该怎么做。我只知道如何迭代列表,但在这种情况下没有顺序。
我希望你可以帮助我。
答案1
使用 GNU sort 和 bash 尝试一下:
cd /path/to/dir/with/your/files
GLOBIGNORE="$(printf "%s\n" file_* | sort -t _ -k2,3r | sort -t _ -k2,2 -u | tr '\n' :)"
mv file_* /path/to/dir/to/save/old/versions
unset GLOBIGNORE