Assumindo que dir1 seja o caminho que você deseja pesquisar e dir2 seja a determinada pasta :
find dir1 -not -path "dir2/*" | grep -F -f <(ls -1 dir2) | parallel rm
ou, se você tiver apenas xargs e não parallel :
find dir1 -not -path "dir2/*" | grep -F -f <(ls -1 dir2) | xargs rm
Exemplo:
Digamos que você queira procurar na unidade C: e a determinada pasta é C:\Desktop , depois em cygwin :
find /cygdrive/c -not -path "/cygdrive/c/Desktop/*" | grep -F -f <(ls -1 /cygdrive/c/Desktop) | parallel rm
em Git-for-Windows :
find /c -not -path "/c/Desktop/*" | grep -F -f <(ls -1 /c/Desktop) | parallel rm
em WSL :
find /mnt/c -not -path "/mnt/c/Desktop/*" | grep -F -f <(ls -1 /mnt/c/Desktop) | parallel rm