正则表达式与 ls 的用法

     2023-02-21     18

关键词:

【中文标题】正则表达式与 ls 的用法【英文标题】:Regular Expression usage with ls 【发布时间】:2013-02-27 01:31:21 【问题描述】:

我正在尝试将 ER (扩展正则表达式)ls 一起使用,例如 ls .+\..+

我正在尝试打印所有包含扩展名的文件 (我知道我可以使用 ls *.*,但我想尝试使用 ER)。

当我运行该代码时,我收到此错误:ls: .+..+: No such file or directory

【问题讨论】:

我认为您混淆了 RE 和 shell 通配符。答案还取决于她将使用什么。 所以我不能在ls中使用RE? 除非你为 ls 使用一些花哨的、非标准的脚本,否则 ls 不使用正则表达式。此外,操作系统将在传递给您的命令之前处理特殊的通配符,如 *。尝试改用“查找” echo $SHELL /bin/bash Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。 【参考方案1】:

您没有说您使用的是什么 shell,但它们通常不支持这种方式的正则表达式,尽管有常见的 *nix CLI 工具(grepsed 等)可以支持。

像 bash 这样的 shell 支持的是 globbing,它使用了一些相似的字符(例如,*)但不是一回事。

较新版本的 bash 确实有一个正则表达式运算符 =~:

for x in `ls`; do 
    if [[ $x =~ .+\..* ]]; then 
        echo $x; 
    fi; 
done

【讨论】:

酷!我从来没有听说过! :) 所以它只使用=~ 并且解释器会明白我要匹配的是RE? 您必须在 test 的上下文中使用它,我相信使用双括号,因此对于这种特定情况,通过 (e)grep 进行管道更直接。但了解一下很有用。 这是一个专门的 bash 比较运算符,这就是为什么它只能在测试中使用。为了清楚起见,只需提及这一点。非常有用的工具。【参考方案2】:

您将正则表达式与shell globbing 混淆了。如果你想使用正则表达式来匹配文件名,你可以这样做:

$ ls | egrep '.+\..+'

【讨论】:

知道了。因此,首先我必须检查我尝试使用的内容是否接受 RE。 如果模式不能单独与globbing 匹配,那么您将不得不使用另一种方法。 F.Y.I 工具find 支持正则表达式匹配。 如果文件列表很长,ls -f 可能会更快。 shellcheck 显示“使用 find 而不是 ls 来更好地处理非字母数字文件名。请参阅 SC2012。”对于ls 和“egrep 是非标准且已弃用。请改用 grep -E。请参阅SC2196。”对于egrep

grep用法

...管道将其作为一个文件传递给grep进行搜索。他支持正则表达式,他将查询文件路径放在最后,查询条件拿引号引起来。还有两个一个是egrep以及fgrep。fgrep是fastgrep,他不支持正则表达式,当字面量查询条件,所以比较fast。【2】... 查看详情

grepegrep及相应的正则表达式和用法

...一) grep与egrep的区别在于grep默认支持的是基本正则表达式egrep默认支持扩展的正则表达式 先从grep的选项说起  使用格式:grep[OPTION]...PATTERN[FILE]...  有以下选项:   查看详情

正则表达式总结与补充.(代码片段)

#正则表达式#基础知识#什么是正则#一种匹配字符串的规则#应用领域#爬虫,登录表单验证,自动化开发,日志处理#正则表达式的语法#元字符#字符组[][^]|()#|的用法[1-9]d16[0-9X]|[1-9]d14身份证号#()的用法[1-9]d14(d2[1-9X])?身份证号#d+(.d+)?小... 查看详情

grep用法

正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串。vim、grep、awk、sed都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;在以前上班的公司里,由于公司是基于w... 查看详情

grep与正则表达式基础

...nbsp;  grep        正则表达式grep用法简介我们介绍GREP的用法,主要用于匹配行,我们借助下面的正则表达式来介绍如何使用grep,还有就是正则表达式在linux中是极为重要的一部分。1命令:grep2... 查看详情

java正则简单用法

正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个... 查看详情

通配符与正则表达式

...法: (总结精辟!) 通配符是系统level的 而正则表达式需要相关工具的支持:egrep,awk,vi,perl。在文本过滤工具里,都是用正则表达式,比如像awk,sed等,是针对文件的内容的。通配符多用在文件名上,比如查找find,ls,cp... 查看详情

正则表达式-语法

正则表达式- 语法正则表达式(regularexpression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。列目录时, dir*.txt或ls*.txt中的*.txt就不... 查看详情

正则表达式基本用法(代码片段)

原文:正则表达式基本用法说到正则表达式,大家就会想到那像火星文一样的正则表达式字符串。虽然看起来很奇怪,但是一个个都搞清楚那些东西分别表示什么意思的时候,会发现这东西其实也不难。说干就干,我们来一个个... 查看详情

通配符正则表达式的记录

一、通配中的元字符的意义如下(不使用正则表达式):* 表示任意多的任意字符? 表示一个任意字符^ 表示取反[] 同正则表达式的用法{} 表示一组表达式的集合 {}中表达式是或的关系如ls-l{*.cpp,[1234]*.c} 列出满足表达式*.cpp或... 查看详情

正则表达式语法

正则表达式- 语法正则表达式(regularexpression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。列目录时, dir*.txt或ls*.txt中的*.txt就不... 查看详情

orclregexp_like的用法

oracle10g以上支持正则表达式的函数主要有下面四个:1、REGEXP_LIKE:与LIKE的功能相似2、REGEXP_INSTR:与INSTR的功能相似3、REGEXP_SUBSTR:与SUBSTR的功能相似4、REGEXP_REPLACE:与REPLACE的功能相似POSIX正则表达式由标准的元字符(metacharacters... 查看详情

javapattern的用法是啥?

参考技术Ajava中pattern为正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建Matcher对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的... 查看详情

正则与python的re模块

一、正则表达式的语法  正则表达式使用反斜杠字符(‘\‘)来表示特殊的形式或者来允许使用特殊的字符而不要启用它们特殊的含义。这与字符串字面值中相同目的的相同字符的用法冲突;例如,要匹配一个反斜线字面值,你... 查看详情

正则表达式

正则表达式- 语法正则表达式(regularexpression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。列出目录时,dir*.txt 或 ls*.txt ... 查看详情

centos7.4grep常用用法

...lsearch"为全局搜索之意。全称中的"RegularExpression"表示正则表达式。所以,从grep的全称中可以了解到,grep是一个可以利用"正则表达式"进行"全局搜索"的工具,grep会在文本文件中按照指定的正则进行全局搜索,并将搜索出的行打... 查看详情

centos常用命令之:正则表达式

我们知道,正则表达式可以大大的提高我们的工作效率。在了解正则表达式之前,我们需要了解,通配符的概念。在linux中,我们在使用ls这个命令的时候经常会使用下面这种用法[[email protected]stu]$lllin1*-rw-r--r--.1fuwhfuwh28657月26... 查看详情

grep与正则表达式(代码片段)

  第四周 本周分享一下grep与正则表达式的一些基本用法,通常配合起来在文本文件中搜索一些想要的内容 文本三剑客之grep grep强大的文本搜索过滤工具,从文件中搜索特定字符显示打印至终端窗口,另外还支... 查看详情