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