Scripting

有條件地刪除具有副檔名優先級的不同副檔名的重複文件?

  • July 11, 2022

我有一個很大的文件目錄,其中有重複的文件名但副檔名不同。我想做的是刪除重複項,但具有保留副檔名的優先順序。

因此,例如,如果我有 4 種文件類型 .aaa、.bbb .ccc、.ddd,如果沒有其他具有此名稱的文件,我只想保留 *.ddd,如果有,則保留 *.ccc沒有 *.aaa 或 *.bbb,如果沒有 *.aaa 則保留 *.bbb 並始終保留 *.aaa。

有沒有辦法做到這一點?

使用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如果高興)。

引用自:https://unix.stackexchange.com/questions/709441