1. ホーム
  2. regex

[解決済み] findコマンドで正規表現を使うには?

2022-03-14 14:49:17

質問

生成されたuuid1文字列で命名された画像がいくつかあります。例えば、81397018-b84a-11e0-9d2a-001b77dc0bed.jpgのように。私は"find"コマンドを使用してこれらのイメージをすべて見つけたいのです。

find . -regex "[a-f0-9\-]\{36\}\.jpg".

しかし、うまくいきません。正規表現に何か問題があるのでしょうか?誰か助けてくれませんか?

解決方法は?

find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"

を指定する必要があることに注意してください。 .*/ というのは、冒頭で find はパス全体にマッチします。

susam@nifty:~/so$ find . -name "*.jpg"
./foo-111.jpg
./test/81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
./81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
susam@nifty:~/so$ 
susam@nifty:~/so$ find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"
./test/81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
./81397018-b84a-11e0-9d2a-001b77dc0bed.jpg

私バージョンのfindです。

$ find --version
find (GNU findutils) 4.4.2
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS() CBO(level=0) 
susam@nifty:~/so$ 
susam@nifty:~/so$ find . -regextype foo -regex ".*/[a-f0-9\-]\{36\}\.jpg"
find: Unknown regular expression type `foo'; valid types are `findutils-default', `awk', `egrep', `ed', `emacs', `gnu-awk', `grep', `posix-awk', `posix-basic', `posix-egrep', `posix-extended', `posix-minimal-basic', `sed'.