如何使用正则表达式查找文件并列出它们?

时间:2014-12-05 14:08:46

标签: regex command-line

我是整个命令行的新手,并试图弄清楚如何通过regex搜索当前目录及其子目录中具有特定文件名的文件。然后我想在我的命令行中列出文件。

正则表达式应匹配以下文件:

B2ctes_UCUAAwF-K-large-123x322-132x423.jpg
this_is-a-123-file_name-3124x2445-4235x32.jpeg
file-32x32-64x64.png

重要的部分是-[number]x[number]-[number]x[number]

我的尝试看起来像这样:

find . -type f -regex ".+?-\d+x\d+-\d+x\d+\.\w{3,4}" -ls;

这有两个问题:

  1. -ls看台显示了很多信息。我只想要文件名。
  2. 正则表达式不起作用。我曾尝试使用.+,但即使这样也不会返回任何内容。

2 个答案:

答案 0 :(得分:1)

您可以将此findregex

一起使用
find . -regextype posix-extended -type f -regex ".*-[[:digit:]]+x[[:digit:]]+-[[:digit:]]+x[[:digit:]]+\.[[:alnum:]]{3,4}"

或者在OSX上:

find -E . -type f -regex ".*-[[:digit:]]+x[[:digit:]]+-[[:digit:]]+x[[:digit:]]+\.[[:alnum:]]{3,4}"

没有正则表达式

find . -type f -name "*-[[:digit:]]*x[[:digit:]]*-[[:digit:]]*x[[:digit:]]*.[[:alnum:]]*"

答案 1 :(得分:0)

简单地说:

find . -type f -name '-[0-9]*x[0-9]*-[0-9]*x-[0-9]*'

find . -type f  -regextype posix-egrep -regex '.*-[0-9]+x[0-9]+-[0-9]+x-[0-9]+.*'