bash - 通配符在 bash 中表示任何但不为空
问题描述
我在文件夹中有以下文件列表:
- vim
- viminfo
- vimrc
- vimrcpg
- vimrcsh
我想列出所有以 vim 开头的文件,而不是 vim 本身。如果我使用 vim*,结果包括 vim。是否有任何通配符可以产生所需的结果?
解决方案
假设您有一个名为“/home/user”的文件夹,其中包含以下文件:
vim
viminfo
vimrc
vimrcpg
vimrcsh
然后:
ls -A1 /home/user | grep -E '^vim(?<!$)'
将打印:
viminfo
vimrc
vimrcpg
vimrcsh
ls-A1
A
表示仅逐行打印文件夹内容名称1
grep -E '^vim(?<!$)'
表示匹配后以换行符^
开头vim
和不?<!
以换行符结尾的打印行$
如果您只想列出文件:
find /home/user -maxdepth 1 -type f -printf '%f\n' | grep -E '^vim(?<!$)'
推荐阅读
- nuxt.js - 为具有相同父文件夹的动态路由设置优先级
- eclipse - 关闭休眠日志控制台
- intellij-idea - 构建时 IntelliJ 错误的源值
- google-chrome - Datalist HTML 显示的值比预期的要多
- javascript - Discord.JS UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“startsWith”
- powerapps - 基于单选按钮选择如何更改 powerapps 中的放置选项
- python - Jupyter notebook 问题服务器错误:错误
- r - 矩阵节点与igraph中的矩阵具有相同的属性转换
- python - Django 测试没有返回正确的状态码
- postgresql - 如何在 postgres 中创建可以继续使用的 dblink 连接