考虑一个包含以下内容的目录.abc-dir1是一个目录.其他是文件.
abc-dir1
abc-file1
.abc-file2
def-file1
Run Code Online (Sandbox Code Playgroud)
ls -d *abc* 产生清单1:
abc-dir1
abc-file1
Run Code Online (Sandbox Code Playgroud)
我想显示名称匹配的所有目录和文件(包括隐藏的目录和文件)*abc*.清单2是我想要的:
abc-dir1
abc-file1
.abc-file2
Run Code Online (Sandbox Code Playgroud)
但ls -a -d *abc*仍然产生清单1.所以似乎存在*abc*覆盖-a选项的影响.有没有办法用ls显示列表2 ?
打开该dotglob选项。
$ shopt -s dotglob
$ printf '%s\n' *abc*
abc-dir1
abc-file1
.abc-file2
Run Code Online (Sandbox Code Playgroud)
如果您确实想显示“开头” abc(带或不带首字母.)的文件,请改用扩展模式。
$ shopt -s extglob
$ printf '%s\n' ?(.)abc*
Run Code Online (Sandbox Code Playgroud)
我已经用printf来代替ls. 除非您使用一个或多个选项来ls排序、显示其他元数据等,否则无需运行外部程序来仅显示文件名。
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |