递归查找正好是8个十六进制字符的文件名,但不是全部为0-9,没有前瞻(Mac终端,bash)

问题描述 投票:0回答:1

[我正在尝试编写正则表达式以使用Mac Terminal递归查找文件(bash,不是zsh,即使Catalina出于某种原因希望我切换),都使用find命令。我正在寻找以下文件:

  • 正好是8个十六进制数字(0-9和A-F)
  • 但不仅仅是十进制数字(0-9)

换句话说,它将匹配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命令不支持先行。没有人我该怎么办?

regex bash macos find regex-lookarounds
1个回答
0
投票

使用任何符合POSIX的find

find . -name '????????'        \
     ! -name '*[![:xdigit:]]*' \
       -name '*[![:digit:]]*'
© www.soinside.com 2019 - 2024. All rights reserved.