拡張子の異なる重複ファイルを条件付きで最初に削除しますか?

拡張子の異なる重複ファイルを条件付きで最初に削除しますか?

ファイル名は重複しますが、拡張子には別の大きなファイルディレクトリがあります。私がやりたいことは重複を排除しますが、拡張子を保存する優先順位を持つことです。

たとえば、*.aaa、*.bbb*.ccc、*.ddd タイプのファイルが 4 つある場合、その名前を持つ他のファイルがない場合は *.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)。

おすすめ記事