列出/usr/bin中的所有文件,其文件名只包含小写英文字母,还包含单词文件作为(连续的)子字符串。
例如,git-ls-files文件和profiles就是这样的文件。
这正是我的问题所在,我只能使用grep、ls、cat和wc。
ls /usr/bin/ | grep '[^-]*file'这是我到目前为止得到的,输出在下面。例如,我不知道如何显示file,因为* is zero or more occurences。也不知道怎么把小写的东西放进regex里。
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发布于 2012-01-26 19:58:53
ls /usr/bin/ | grep --regex '^[[:lower:]]*file[[:lower:]]*$'^和$分别匹配字符串的开头和结尾。
发布于 2012-01-26 20:08:11
在这种情况下,使用带管道的ls与grep实际上是多余的。您可以使用find
$> find /usr/bin -regex "/usr/bin/[a-z]*file[a-z]*" -type f -printf "%f\n"
profiles
keditfiletype
inifile
dotlockfile
pamfile
pnmfile
file
konsoleprofile发布于 2012-01-26 19:59:34
ls -1 /usr/bin | grep '^[a-z]*file[a-z]*$'ls -1确保将文件列在一行中。^和$是行开始和结束的符号,这就是您所缺少的(否则它可以匹配文件名的子字符串)。
https://stackoverflow.com/questions/9024354
复制相似问题