首页 > 解决方案 > 通配符在 bash 中表示任何但不为空

问题描述

我在文件夹中有以下文件列表:

我想列出所有以 vim 开头的文件,而不是 vim 本身。如果我使用 vim*,结果包括 vim。是否有任何通配符可以产生所需的结果?

标签: bash

解决方案


假设您有一个名为“/home/user”的文件夹,其中包含以下文件:

vim
viminfo
vimrc
vimrcpg
vimrcsh

然后:

ls -A1 /home/user | grep -E '^vim(?<!$)'

将打印:

viminfo
vimrc
vimrcpg
vimrcsh

ls-A1A表示仅逐行打印文件夹内容名称1

grep -E '^vim(?<!$)'表示匹配后以换行符^开头vim和不?<!以换行符结尾的打印行$

如果您只想列出文件:

find /home/user -maxdepth 1 -type f -printf '%f\n' | grep -E '^vim(?<!$)'

推荐阅读