Regex 在命令行上使用模式匹配和模

Regex 在命令行上使用模式匹配和模,regex,ksh,Regex,Ksh,我使用ksh模式匹配来过滤目录中的文件列表,如下所示 fn="${file##*[!0-9]}" if [[ -n $fn && $(( $fn % 2 )) -eq 0 ]] 是否可以在ls命令中的命令行上使用相同的模式匹配和模运算符 最终,我希望能够在单个循环语句中执行此操作 for file in mail.sh* do done 如果您发布了更多的示例,回答起来可能会更容易,但我想在这里猜测,您正在尝试使用以偶数结尾的文件 for file in *[02468] d

我使用ksh模式匹配来过滤目录中的文件列表,如下所示

fn="${file##*[!0-9]}"
if [[ -n $fn && $(( $fn % 2 )) -eq 0 ]]
是否可以在
ls
命令中的命令行上使用相同的模式匹配和模运算符

最终,我希望能够在单个循环语句中执行此操作

for file in mail.sh*
do
done

如果您发布了更多的示例,回答起来可能会更容易,但我想在这里猜测,您正在尝试使用以偶数结尾的文件

for file in *[02468]
do
    ...
done
或者,如果您想做比mod 2更复杂的事情,我将使用backticks和perl

for file in `perl -e 'join(" ",grep /(\d+)/ && $1 % 2 == 0 , glob "file*");'`
do
    ...
done

其中,
$1%2==0
是您的示例算术表达式。(老实说,我也会用perl编写整个脚本!)

没错。谢谢我要寻找的不仅仅是模式匹配。我希望使用模运算符。目前我正在使用管道和awk的组合。我也喜欢使用Perl,但我没有这个选项。我最后这样做了:
for file in$(ls$HOME/mail*|awk'{if($2%2==0)print$0})do