Se togli la parte finale dell’if non funziona correttamente.
Detto ciò, ho riletto il tuo messaggio precedente e recepito le tue nuove osservazioni. Ho provato a scrivere qualcosa di meglio.
$ echo "abderaaaaa±∅∞∅∓" | python3 -c"import fileinput as f;print(*set(filter(lambda c:ord(c)>127,''.join(f.input()))),sep='\n')"
±
∓
∅
∞
La cosa carina è che puoi passargli caratteri sia via pipe sia via file.
$ python3 -c"import fileinput as f;print(*set(filter(lambda c:ord(c)>127,''.join(f.input()))),sep='\n')" ~frafra/Documenti/*.txt
€
è
à
Di conseguenza, nel tuo caso suggerirei di lanciare:
$ (shopt -s globstar;
python3 -c"import fileinput as f;print(*set(filter(lambda c:ord(c)>127,''.join(f.input()))),sep='\n')" $PATH_FILES/**/*.{java,xml})
Siccome potrebbero esserci caratteri non utf-8 (raro, ma accade), per semplicità, al posto di complicare la vita a Python, potresti usare il buon iconv (che se vede qualcosa che non gli piace lo ignora):
$ (shopt -s globstar;cat $PATH_FILES/**/*.{java,xml}|iconv -tutf-8|
python3 -c"import fileinput as f;print(*set(filter(lambda c:ord(c)>127,''.join(f.input()))),sep='\n')")
Se ti interessasse anche l’ordinamento…
$ (shopt -s globstar;cat $PATH_FILES/**/*.{java,xml}|iconv -tutf-8|
python3 -c"import fileinput as f;print(*sorted(set(filter(lambda c:ord(c)>127,''.join(f.input())))),sep='\n')")