0

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

fn="${file##*[!0-9]}"
if [[ -n $fn && $(( $fn % 2 )) -eq 0 ]]

是否可以在命令的命令行上使用相同的模式匹配和模数运算符ls

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

for file in mail.sh*
do
done
4

1 回答 1

1

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

for file in *[02468]
do
    ...
done

或者,如果你想做一些比 mod 2 更复杂的事情,我会使用反引号和 perl

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

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

于 2013-09-18T18:32:34.667 回答