grep -E中的正则表达式无法按预期工作

时间:2012-02-06 19:08:11

标签: regex bash shell grep

我正在研究一个bash shell脚本,它通过一个文件夹,最终根据文件名创建新目录。 现在,我想浏览每个文件并删除不需要的路径斜杠,并在创建新目录之前忽略fileextension。 为了测试这个,我正在回复我的文件:

#!/bin/sh

cpath=`pwd`
for file in $cpath/*;do
echo $file | grep -E '(?!.*/).+(?=\.)'
done

但是grep会过滤掉所有内容而我没有输出。我使用RegExr http://gskinner.com/RegExr/?2vu6b来制定正则表达式 负向前瞻以匹配最后一个斜线和与最后一个点匹配的正向前瞻。

1 个答案:

答案 0 :(得分:2)

我不确定Negative lookahead是否是Extended RE的一部分。但你可以这样做 -

#!/bin/bash

for file in $PWD/*; do
basename "${file%.*}"
done