首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用grep列出目录中的文件

使用grep列出目录中的文件
EN

Stack Overflow用户
提问于 2012-01-26 19:53:52
回答 4查看 734关注 0票数 2

列出/usr/bin中的所有文件,其文件名只包含小写英文字母,还包含单词文件作为(连续的)子字符串。

例如,git-ls-files文件和profiles就是这样的文件。

这正是我的问题所在,我只能使用greplscatwc

代码语言:javascript
复制
ls /usr/bin/ | grep '[^-]*file'

这是我到目前为止得到的,输出在下面。例如,我不知道如何显示file,因为* is zero or more occurences。也不知道怎么把小写的东西放进regex里。

代码语言:javascript
复制
check-binary-files
clean-binary-files
desktop-file-install
desktop-file-validate
ecryptfs-rewrite-file
file
filep
git-cat-file
git-diff-files
git-ls-files
git-merge-file
git-merge-one-file
git-unpack-file
lockfile
nsrfile
pamfile
pcprofiledump
pnmfile
ppufiles
profiles
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-26 19:58:53

代码语言:javascript
复制
ls /usr/bin/ | grep --regex '^[[:lower:]]*file[[:lower:]]*$'

^和$分别匹配字符串的开头和结尾。

票数 1
EN

Stack Overflow用户

发布于 2012-01-26 20:08:11

在这种情况下,使用带管道的lsgrep实际上是多余的。您可以使用find

代码语言:javascript
复制
$> find /usr/bin -regex "/usr/bin/[a-z]*file[a-z]*" -type f -printf "%f\n"
profiles
keditfiletype
inifile
dotlockfile
pamfile
pnmfile
file
konsoleprofile
票数 1
EN

Stack Overflow用户

发布于 2012-01-26 19:59:34

代码语言:javascript
复制
ls -1 /usr/bin | grep '^[a-z]*file[a-z]*$'

ls -1确保将文件列在一行中。^$是行开始和结束的符号,这就是您所缺少的(否则它可以匹配文件名的子字符串)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9024354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档