Предполагая, что «иностранный» означает «не символ ASCII», вы можете использовать findс шаблоном, чтобы найти все файлы, не имеющие печатаемых символов ASCII в их именах:
LC_ALL=C find . -name '*[! -~]*'
(Пробел - первый печатный символ, указанный на http://www.asciitable.com/ , ~- последний.)
LC_ALL=CТребуется подсказка для (собственно, LC_CTYPE=Cи LC_COLLATE=C), иначе диапазон символов интерпретируется неправильно. Смотрите также страницу руководства glob(7). Так как LC_ALL=Cвызывает findинтерпретацию строк как ASCII, он будет печатать многобайтовые символы (такие как π) как вопросительные знаки. Чтобы это исправить, направьте в какую-нибудь программу (например cat) или перенаправьте в файл.
Вместо указания диапазонов символов [:print:]также можно использовать для выбора «печатных символов». Обязательно установите локаль C, иначе вы получите (на первый взгляд) произвольное поведение.
Пример:
$ 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
./π