확장명이 다른 중복 파일을 조건부로 먼저 제거하시겠습니까?

확장명이 다른 중복 파일을 조건부로 먼저 제거하시겠습니까?

파일 이름은 중복되지만 확장자는 다른 큰 파일 디렉터리가 있습니다. 내가하고 싶은 것은 중복을 제거하지만 확장자를 보존하는 우선 순위를 갖는 것입니다.

예를 들어 *.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).

관련 정보