Questa frase di ricerca dovrebbe funzionare per te:
find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y="$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x")" && mv "$x" "$y" ' \;
Nessuna delle risposte precedenti trova file o directory che terminano con uno spazio (' ') o un punto/punto ('.') che non sono visibili con l'API Win32.
Aggiungendo alla risposta di .e.g. @falsetru, si potrebbe fare
find . -name '*[<>:/\\|?*]*' -o -name '*[ \.]'
Il modello fnmatch ti consente di specificare i caratteri in []
come segue:
find . -name '*[<>:/\\|?*]*'