GNU findコマンドで正規表現キャプチャグループを使用できますか?

GNU findコマンドで正規表現キャプチャグループを使用できますか?

GNUfindコマンド(GNU findutils 4.4.2)、正規表現を使用してファイルを検索できます。たとえば、

$ find pool -regextype posix-extended -regex ".*/mypackage-([a-zA-Z0-9.]+-[0-9]{1,2})-x86_64.pkg.tar.xz+"

抽出できますか?キャプチャグループこの式で定義し、それをパラメータに使用しますか-printf

したがって、という名前の見つかったファイルがある場合は、その部分を式に含めたいとpool/mypackage-1.4.9-1-x86_64.pkg.tar.xz思います。1.4.9-1printf

可能ですか?

ベストアンサー1

使用する場合

find pool -regextype posix-extended \
    -regex ".*/mypackage-([a-zA-Z0-9.]+-[0-9]{1,2})-x86_64\.pkg\.tar\.xz" \
    -printf '%f\n' |
  grep -Eo '[a-zA-Z0-9.]+-[0-9]{1,2}'

grepGNUも同じだと仮定します)、すべてのパスで動作する必要があります。正規表現は改行を許可しないため、類似した名前を含むディレクトリと一致させることはできません。

おすすめ記事