我有一个很大的文件目录,其中有重复的文件名但扩展名不同。我想做的是删除重复项,但有保留扩展名的优先顺序。
因此,例如,如果我有 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
)。