好的,这个问题针对 Unix/Linux shell!
我想要一个 shell globbing(又名通配符)模式或 GLOBIGNORE 列表,以非递归方式(maxdepth == 1)匹配当前目录中的所有文件,包括隐藏文件。到目前为止,我必须执行两个命令或使用较长的解决方法(见下文):
ls -lad *vim*
ls -lad .*vim*
Run Code Online (Sandbox Code Playgroud)
在使用 zsh 时。如果我记得的话,dash 和 bash 是一样的,对吧?
简短的解决方法:
ls -la | grep vim
find . -maxdepth 1 | grep vim
Run Code Online (Sandbox Code Playgroud)
我想了一百次:难道没有一个简单的通配解决方案吗?为什么不*匹配点字符?
Jde*_*eBP 11
* 确实匹配一个.字符。.当它是名称的第一个字符时,它根本不匹配。这为“隐藏”文件提供了所谓的“点文件”机制。
zsh:设置GLOB_DOTS外壳选项。这在zsh用户手册的第 14.8 节中。请注意,即使打开了此选项,.和..也始终被排除在外。
bash:设置dotglob外壳选项。这在bash用户手册的第 3.5.8 节中。请注意,设置GLOBIGNOREshell 变量会隐式设置dotglob; 这bash(与zsh)不会自动排除.,并..在dotglob启用; 但这bash 会在GLOBIGNORE设置时做到这一点。所以设置GLOBIGNORE=.会有开启dotglob 和排除.和的效果..。
find:不要做任何事情。截至findutils4.2.2,对于通配-name,并-iname 已匹配以点作为第一个字符的名称。这在findutils用户手册的第 2.1.1 节中。
如果您不想更改任何选项,则可以使用以下任何选项:
ls -ld {,.}*vim*
ls -ld *vim* .*vim*
find . -maxdepth 1 -name "*vim*"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |