1

Нечто похожее на find . <...> , но любой подход к оболочке, включая другие языки, подойдет.

1 ответ1

0

Сначала я подумал, что это невозможно:

$ find -regextype help
find: Unknown regular expression type ‘help’; valid types are ‘findutils-default’, ‘awk’, ‘egrep’, ‘ed’, ‘emacs’, ‘gnu-awk’, ‘grep’, ‘posix-awk’, ‘posix-basic’, ‘posix-egrep’, ‘posix-extended’, ‘posix-minimal-basic’, ‘sed’.

Итак, выходит питон:

#!/usr/bin/env python3

import os
import os.path
import argparse

parser = argparse.ArgumentParser(description="List entries containing characters in unicode private use areas")
parser.add_argument("path", help="starting point")
args = parser.parse_args()

pua = (range(0xE000,0xF8FF+1),range(0xF0000,0xFFFFD+1), range(0x100000,0x10FFFD+1))

for (dp,dn,fn) in os.walk(args.path):
    for n in sorted(fn+dn):
        f = False
        for c in n:
            for r in pua:
                if ord(c) in r:
                    f = True
                    print(os.path.join(dp,n))
                    break
            if f:
                break

И после нахождения stackoverflow:Linux $ FIND и шестнадцатеричное обозначение диапазона символов Unicode?, этот:

find . -print0 |
grep -zP '[\x{E000}-\x{F8FF}\x{F0000}-\x{FFFFD}\x{100000}-\x{10FFFD}][^/]*$' |
tr "\0" "\n"

Я попытался \p{InPrivate_Use_Area} , но это генерирует:

grep: unknown property name after \P or \p

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .