A algo peligroso La solución es esta, desde la línea de mando:
find . -type f ! -regex '.*/[ -.0-~]*' -exec rm {} +
Reemplaza al solitario .
con el nombre del directorio superior si no has cambiado al directorio relevante primero. Para estar seguro, sin embargo, intente primero el comando más corto
find . -type f ! -regex '.*/[ -.0-~]*'
y asegúrate de que sólo se enumeran los archivos que deseas eliminar. La expresión regular (regexp, o regex) aquí coincidirá con cualquier ruta que termine en una barra seguida de cualquier combinación de caracteres ASCII imprimibles, excluyendo /
los personajes del espacio son los primeros y ~
el último, mientras que .
y 0
rodea /
en la secuencia ASCII.
Una advertencia entre muchas otras: No sé con certeza si su ubicación actual podría cambiar la secuencia de caracteres de cotejo, y por lo tanto tal vez cambiar el significado de la regexp. No creo que lo haga, pero si lo hace, ejecutar los comandos como
LC_COLLATE=C find …
debería eliminar el peligro.
Otra advertencia: Por favor, asegúrese de tener una copia de seguridad antes de intentarlo. No asumiré la culpa de ninguna pérdida de datos si se equivoca. ¡La línea de comandos es una gran herramienta para dispararse en el pie! A veces, sólo un espacio equivocado puede significar un desastre. (En este caso, por ejemplo, perder el único espacio después del soporte izquierdo es mortal).