我正在使用ksh模式匹配来过滤目录中的文件列表,如下所示。
fn="${file##*[!0-9]}"
if [[ -n $fn && $(( $fn % 2 )) -eq 0 ]]
是否可以在ls
命令中的命令行上使用相同的模式匹配和模数运算符?
最终,我希望能够在单个循环语句中执行此操作。
for file in mail.sh*
do
done
答案 0 :(得分: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编写你的整个脚本!)