Suponiendo que "extraño" significa "no un carácter ASCII", puede usarlo findcon un patrón para encontrar todos los archivos que no tienen caracteres ASCII imprimibles en sus nombres:
LC_ALL=C find . -name '*[! -~]*'
(El espacio es el primer carácter imprimible que aparece en http://www.asciitable.com/ , ~es el último).
La sugerencia para LC_ALL=Ces obligatoria (en realidad, LC_CTYPE=Cy LC_COLLATE=C), de lo contrario, el rango de caracteres se interpreta incorrectamente. Vea también la página del manual glob(7). Dado que LC_ALL=Chace findque las cadenas se interpreten como ASCII, imprimirá caracteres de varios bytes (como π) como signos de interrogación. Para solucionar esto, diríjase a algún programa (por ejemplo cat) o redirija a un archivo.
En lugar de especificar rangos de caracteres, [:print:]también se puede usar para seleccionar "caracteres imprimibles". Asegúrese de establecer la configuración regional C o obtendrá un comportamiento bastante (aparentemente) arbitrario.
Ejemplo:
$ touch $(printf '\u03c0') "$(printf 'x\ty')"
$ ls -F
dir/ foo foo.c xrestop-0.4/ xrestop-0.4.tar.gz π
$ find -name '*[! -~]*' # this is broken (LC_COLLATE=en_US.UTF-8)
./x?y
./dir
./π
... (a lot more)
./foo.c
$ LC_ALL=C find . -name '*[! -~]*'
./x?y
./??
$ LC_ALL=C find . -name '*[! -~]*' | cat
./x y
./π
$ LC_ALL=C find . -name '*[![:print:]]*' | cat
./x y
./π