如何列出/etc中所有以s开头的三字母文件?

如何列出/etc中所有以s开头的三字母文件?

如何列出/etc中所有以s开头的三字母文件?

可不可能是

ls -d /etc/s*

或者

ls -d /etc/s%%

因为所有三个字母的文件都是我正在寻找的。

编辑* ls -d /etc/s??

会吗?代表另外两个字母,后跟 's' 谢谢

答案1

首先是模式 s??对于以 's' 开头的三个字符是正确的,但是 s??是一个全局表达式,shell 会将其扩展为任何匹配项。就我而言,/etc 有两个文件夹 /etc/ssh 和 /etc/ssl。这意味着您建议的命令

ls -d /etc/s??

将被 shell 扩展为

ls -d /etc/ssh /etc/ssl

然后,它将仅列出目录名称本身,因为这就是 -d 指示 ls 执行的操作。不幸的是,省略 -d 将导致列出 /etc 下任何 3 个字母的目录的内容 - 这也不是您想要的。

您可能需要使用 find,但指示它不要递归搜索 (-max深度 1),而是查找文件 (-type f) 以及与模式 's??' 匹配的名称(-名字是??')

find /etc -maxdepth 1 -type f -name 's??'

还要注意,我已将模式括在单引号中,这将阻止 shell 在 find 看到它之前将搜索模式扩展为任何匹配的文件。

相关内容