列出具有数字名称的文件

时间:2017-09-03 14:53:15

标签: linux bash shell unix

如何列出仅包含数字名称的文件,例如

1111 
2342 
763
71

我尝试了ls -l [0-9]*,但这似乎带来了所有文件名 以数字开头,数字后可以在其名称中包含任何内容。

4 个答案:

答案 0 :(得分:4)

首先,启用Bash的extglob选项:

shopt -s extglob

然后使用这种模式:

ls -l +([0-9])

详细了解Bash Reference Manual中的扩展模式匹配。

答案 1 :(得分:2)

使用GNU find

find . -type f -regex './[0-9]*$'

这使用正则表达式而不是文件名通配模式。表达式./[0-9]*$匹配./(当前目录),后跟只有数字,直到结束($)。

如果您需要阻止find进入子目录,请添加-maxdepth 1

如果您想要ls -l类行为,请在最后添加-ls

答案 2 :(得分:1)

使用相反的操作:忽略带有非数字的文件名 [^0-9]

ls -1 --ignore=*[^0-9]*
  

<强> - 忽略= PATTERN
                不列出与shell PATTERN匹配的隐含条目

答案 3 :(得分:0)

此命令始终是最安全的选项!

ls | grep -E '^[0-9]+$'

为受众添加一些示例测试用例以明确说明。

$ls
1       12222e      2       B.class     Test.java   file.sh     y.csv
1.txt       1a      A.class     Test.class  db_2017-08-15   file.txt
$ ls  | grep -E '^[0-9]+$'
1
2