我是整个命令行的新手,并试图弄清楚如何通过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;
这有两个问题:
-ls
看台显示了很多信息。我只想要文件名。.+
,但即使这样也不会返回任何内容。答案 0 :(得分:1)
您可以将此find
与regex
:
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]+.*'