如何列出/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 看到它之前将搜索模式扩展为任何匹配的文件。