найти. | egrep [^ a-zA-Z0-9 _./- \ s]
Опасность, оболочка убегает!
bash будет интерпретировать этот последний параметр, удаляя один уровень экранирования от обратной косой черты. Попробуйте поставить двойные кавычки вокруг выражения "[^ group]".
Также, конечно, это запрещает намного больше, чем UTF-8. возможно создать регулярное выражение для соответствия допустимым строкам UTF-8, но это довольно уродливо Если у вас есть Python 2.x, вы можете воспользоваться этим:
import os.path
def walk(dir):
for child in os.listdir(dir):
child= os.path.join(dir, child)
if os.path.isdir(child):
for descendant in walk(child):
yield descendant
yield child
for path in walk('.'):
try:
u= unicode(path, 'utf-8')
except UnicodeError:
# print path, or attempt to rename file