我有一个带有数字文件名的文件列表(例如#.php,##.php或###.php),我想一举复制/移动.
有没有人知道一个ls或grep组合命令来实现这个目标?
我有这么多:
ls -al | grep "[0-9].php"
在Bash中,您可以使用扩展模式匹配:
shopt -s extglob
ls -l +([0-9]).php
会找到如下文件:
123.php
9.php
但不是
a.php
2b.php
c3.php
像这样修改:
ls -al | grep -E '^[0-9]+\.php$'
-E 激活扩展的正则表达式.
+ 要求必须至少出现前一组的一次出现.
\. 逃避点,否则意味着"任何角色".
^并$匹配整个文件名而不仅仅是一个部分.
单引号以防止变量扩展(因为它会抱怨$).
ppo*_*zos -1
列出文件时可以使用正则表达式:
ls [0-9]*
对于上述问题,这是一种简单且简约的方法,但我认为更好的解决方案是
ls -al | grep -E '^[0-9]+\.php$'
正如 UncleZeiv下面所解释的。