如何列出目录中以字符开头但文件名后跟 8 个小写字符的文件?
How to list files in a directory that begin with a character but the filename is then followed by 8 lower-case characters?
从 Linux CLI,使用 bash shell,如何列出文件(使用 ls 命令)在所需文件名都以字符 P 开头但文件名的其余部分后跟 8 个小写字符的目录中?
尝试了以下但它不起作用。
ls -las P[a-z]{8}
示例目录将包含如下文件:
Pasdfghjk
Pqwertyui
Pabcd
Pads
其中只有前两个文件需要 listed/returned 到 STDOUT。
如果 ls 命令不能执行此操作,那么什么命令或命令序列可以?
Bash glob 没有有限重复运算符 ({8}
),即使启用了 extglob
。
所以你可以通过管道 ls
到 grep
:
ls -ls | grep -E 'P[a-z]{8}$'
(这并不完美,因为它会匹配以模式结尾的文件名。但这在您的情况下可能并不重要。)
或者您可以手动扩展 glob:
ls -ls P[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]
使用 GNU 查找:
find . -maxdepth 1 -regextype sed -regex './P[a-z]\{8\}' -printf "%f\n"
从 Linux CLI,使用 bash shell,如何列出文件(使用 ls 命令)在所需文件名都以字符 P 开头但文件名的其余部分后跟 8 个小写字符的目录中? 尝试了以下但它不起作用。
ls -las P[a-z]{8}
示例目录将包含如下文件:
Pasdfghjk
Pqwertyui
Pabcd
Pads
其中只有前两个文件需要 listed/returned 到 STDOUT。 如果 ls 命令不能执行此操作,那么什么命令或命令序列可以?
Bash glob 没有有限重复运算符 ({8}
),即使启用了 extglob
。
所以你可以通过管道 ls
到 grep
:
ls -ls | grep -E 'P[a-z]{8}$'
(这并不完美,因为它会匹配以模式结尾的文件名。但这在您的情况下可能并不重要。)
或者您可以手动扩展 glob:
ls -ls P[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]
使用 GNU 查找:
find . -maxdepth 1 -regextype sed -regex './P[a-z]\{8\}' -printf "%f\n"