如何显示当前目录中第一个字符为数字且最后一个字符为非字母数字的所有文件。我已经尝试过:
ls grep -E '^{[-0-9]
但此命令行并未给出预期的结果。
答案1
您完全不需要grep
- 您可以使用 bash shell 的内置模式匹配(通配符)功能。例如(假设此上下文中的“数字”表示十进制数字):
ls [0-9]*[^0-9A-Za-z]
或者
ls [[:digit:]]*[^[:alnum:]]
例如
请注意,如果您想查看文件'内容根据您的标题,您将需要类似cat
(或可能head
)的内容来代替ls
。
答案2
尝试这个:
mtodorov@efk:~$ ls | grep -E '^[0-9].*[^0-9A-Za-z]$'
0abc%
1abc%
mtodorov@efk:~$
解释:^
标志着开始和$
标记正则表达式的结束,.*
是通配符,例如*
在 shell 中,^
括号内表示否定选择,并且单引号必须闭合。
答案3
使用正则表达式匹配查找:
$ find -maxdepth 1 -type f -regextype posix-extended \
-regex '.*/[[:digit:]].*[^[:alnum:]]$' -printf %f\\n
查找选项:
-maxdepth n
最多下降 n 级。-type f
将类型限制为常规文件。-regextype type
关于-regex 使用的语法。-regex pattern
RE 模式用于匹配整个路径。-printf format
将打印格式化的输出。.*
匹配任意字符零次或多次。[]
匹配括号内的单个字符[^]
匹配括号内不包含的单个字符。[:digit:]
POSIX 标准定义的数字类。[:alnum:]
POSIX 标准为 alnum 定义类。$
匹配行尾锚点。