[我正在尝试编写正则表达式以使用Mac Terminal递归查找文件(bash,不是zsh,即使Catalina出于某种原因希望我切换),都使用find命令。我正在寻找以下文件:
换句话说,它将匹配A1234567,ABC12DEF,12345ABC和ABCDABCD,但不匹配12345678或09876543。
要查找正好是8个十六进制数字的文件,我已经用过:
find -E . -type f -regex '.*/[A-F0-9]{8}'
。* /是必需的,以允许完整路径名位于文件名之前。这最终将被馈给rm,因此我必须保留路径。
这样的SEEMS应该可以满足我的两个要求:
find -E . -type f -regex '.*/(?![0-9]{8})[A-F0-9]{8}'
但是返回错误:
find: -regex: .*/(?![0-9]{8})[A-F0-9]{8}: repetition-operator operand invalid
似乎find命令不支持先行。没有人我该怎么办?
使用任何符合POSIX的find
:
find . -name '????????' \
! -name '*[![:xdigit:]]*' \
-name '*[![:digit:]]*'