有条件地删除具有不同扩展名且扩展名优先的重复文件?

有条件地删除具有不同扩展名且扩展名优先的重复文件?

我有一个很大的文件目录,其中有重复的文件名但扩展名不同。我想做的是删除重复项,但有保留扩展名的优先顺序。

因此,例如,如果我有 4 个文件类型 *.aaa、*.bbb *.ccc、*.ddd,如果没有其他文件具有该名称,则仅保留 *.ddd,如果有,则保留 *.ccc没有 *.aaa 或 *.bbb,如果没有 *.aaa,则保留 *.bbb,并始终保留 *.aaa。

有没有办法做到这一点?

答案1

有了zsh,你可以这样做:

#! /bin/zsh -
ext=(aaa bbb ccc ddd) # in order of preference.
files=( *.$^ext(ND^/) )
typeset -A seen=()
for f ($files) if (( seen[\$f:r]++ )) echo rm -f -- $f

(如果高兴则删除echo)。

相关内容