GNU/Linux >> Linux の 問題 >  >> Linux

findコマンドで正規表現を使用するには?

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

.*/ を指定する必要があることに注意してください 最初は find なので パス全体に一致します。

例:

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

私のバージョンの検索:

$ 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) 
[email protected]:~/so$ 
[email protected]:~/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'.

-regex 検索式は名前全体に一致します 、現在のディレクトリからの相対パスを含みます。 find . の場合 これは常に ./ で始まります 、次に任意のディレクトリ。

また、これらは emacs です 通常の egrep 正規表現以外のエスケープ規則を持つ正規表現。

これらがすべて現在のディレクトリにある場合、

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

動作するはずです。 (よくわかりません-ここでカウントされた繰り返しを機能させることができません。) -regextype posix-egrep で egrep 式に切り替えることができます :

find . -regextype posix-egrep -regex '\./[a-f0-9\-]{36}\.jpg'

(ここで述べていることはすべて GNU find に関するものであることに注意してください。Mac のデフォルトでもある BSD については何も知りません。)


他の回答から判断すると、これは find のせいかもしれません。

ただし、代わりに次の方法で行うこともできます:

find . * | grep -P "[a-f0-9\-]{36}\.jpg"

grep を少し調整し、必要に応じて異なるオプションを使用する必要があるかもしれませんが、うまくいきます。


Linux
  1. findコマンドを使用して権限を監査する方法

  2. Linuxでfdコマンドを使用してファイルを検索する方法

  3. Linux の find コマンドを使用してファイルを検索する方法

  1. 例でethtoolコマンドを使用する方法

  2. Grepコマンドを使用してファイル内のテキストを検索する方法

  3. パイプで「サブプロセス」コマンドを使用する方法

  1. 検索コマンドを使用してLinuxでファイルを検索する方法

  2. 例を使用してLinuxでIPコマンドを使用する方法

  3. LinuxでSuコマンドを使用する方法