问题描述
|
我正在尝试弄清楚如何获取名为BOZO的文件的文件名列表,但以123或456结尾。
文件是:
BOZO12389,
BOZOand3
BOZOand456
BOZOand5
BOZOhello123
因此,该命令应仅显示\'BOZOhello123 \'和\'BOZOand456 \'
我不知道。我尝试了我能想到的所有形式的LS和GREP。有趣的是,我们试图在课堂上做大约10分钟,但没人能做到(包括讲师)。
解决方法
我做了以下工作
ls BOZO*456 BOZO*123
, 使用shell的glob:
ls BOZO*{123,456}
, 使用正则表达式可以为您提供帮助。命令egrep
应该会有所帮助,因为它将允许您使用正则表达式。
您正在搜索BOZO456和BOZO123类型的文件
句号period3ѭ是通配符,可以代替substitute4ѭ。 *
让您重复0次或更多次。通过放置123和456左右的圆括号,您将模拟OR。
因此,您希望任何字符重复0次或多次,后跟123或456。
例:
egrep \"BOZO.*(456|123)\" data
感谢Nathan Fellman的帮助和修改。
, 您也可以使用find命令:
find . \\( -name \"BOZO*123\" -o -name \"BOZO*456\" \\)
, 这不应该那么难。最幼稚的方法是在目录中加8,然后仅对所需内容进行grep:
$ ls *BOZO* | grep -e \'123$\' -e \'456$\'
, $ ll grep *BOZO*
也可以工作!